;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\210\300\311!\210\300\312!\210\300\313!\210\300\314!\210\315\316\317\320\321DD\322\323\324\325\326&\210\315\327\317\320\330DD\331\323\324\325\332&\210\315\333\317\320\334DD\335\323\336\325\337&\207" [require cl-lib etags haskell-mode haskell-process haskell-font-lock haskell-interactive-mode haskell-session haskell-string haskell-presentation-mode haskell-utils highlight-uses-mode haskell-cabal custom-declare-variable haskell-mode-stylish-haskell-path funcall function #[0 "\300\207" [#1="stylish-haskell"] 1 #1#] "Path to `stylish-haskell' executable." :group haskell :type string haskell-mode-stylish-haskell-args #[0 "\300\207" [nil] 1] "Arguments to pass to program specified by haskell-mode-stylish-haskell-path." list haskell-interactive-set-+c #[0 "\300\207" [t] 1] "Issue ':set +c' in interactive session to support type introspection." haskell-interactive boolean] 8) #@39 Restart the inferior Haskell process. (defalias 'haskell-process-restart #[0 "\300\301 !\210\302\301 \303\304#\210\305\306 !\207" [haskell-process-reset haskell-interactive-process haskell-process-set command-queue nil haskell-process-start haskell-interactive-session] 4 (#$ . 1083) nil]) #@138 Start the inferior Haskell process with a given SESSION. You can create new session using function `haskell-session-make'. (fn SESSION) (defalias 'haskell-process-start #[257 "\302\303\304 !!\305!\203\306\307\"\210\310\311!\312\313#\210\314!\210\210\311!\206)\315\303!!\316\311!\317\"\320\"\210\321\"\210\322\323\"\210\310\311!\312\323#\210\324!\325\326 \"\327 ?\"\210\330\331\332\333\334\"!!\210\335\336A\"\"\210)\266\337\340!\341\"\210\342\340!\343\"\210\344!\210\326 \345\346D>\204\220\347\350!#\210\310\317\351\316\311!\317\"\"#\210\207" [default-directory haskell-process-load-or-reload-prompt get-process haskell-session-name haskell-interactive-session processp haskell-interactive-mode-echo "Restarting process ..." haskell-process-set haskell-session-process is-restarting t delete-process haskell-process-make haskell-process-get command-queue haskell-session-set-process haskell-process-set-session haskell-process-set-cmd nil haskell-session-cabal-dir haskell-process-compute-process-log-and-command haskell-process-type haskell-session-prompt-set-current-dir haskell-process-set-process haskell-process-log propertize format "%S" apply start-process set-process-sentinel haskell-process-process haskell-process-sentinel set-process-filter haskell-process-filter haskell-process-send-startup cabal-repl stack-ghci haskell-process-change-dir haskell-session-current-dir append] 12 (#$ . 1380)]) #@69 Send the necessary start messages to haskell PROCESS. (fn PROCESS) (defalias 'haskell-process-send-startup #[257 "\300\301\302\303\304\305%\"\207" [haskell-process-queue-command record haskell-command #[257 "\302\303\304\305\306\205 \307\"\310#\"\210\302\311\"\210\302\312\313 \"\"\207" [haskell-interactive-set-+c haskell-interactive-prompt-cont haskell-process-send-string mapconcat identity append ("Prelude.putStrLn \"\"" ":set -v1") (":set +c") "\n" ":set prompt \"\\4\"" format ":set prompt-cont \"%s\""] 8 "\n\n(fn PROCESS)"] #[514 "\300\301\"\205!\302\303\"\304\305!\306\307\310\"#\210\311\305!\312\313\"\"\262\207" [haskell-process-consume "^*** WARNING: \\(.+\\) is writable by someone else, IGNORING!$" match-string 1 haskell-session-modify haskell-process-session ignored-files make-closure #[257 "\301\300B\302\303#\207" [V0 cl-remove-duplicates :test string=] 5 "\n\n(fn FILES)"] haskell-interactive-mode-compile-warning format "GHCi is ignoring: %s (run M-x haskell-process-unignore)"] 9 "\n\n(fn PROCESS BUFFER)"] #[514 "\303\304!\305G!8 \205\306P\"\210r\307 q\210\nb)\207" [haskell-process-greetings haskell-process-show-debug-tips haskell-interactive-mode-prompt-start haskell-interactive-mode-echo haskell-process-session random "\nIf I break, you can:\n 1. Restart: M-x haskell-process-restart\n 2. Configure logging: C-h v haskell-process-log (useful for debugging)\n 3. General config: M-x customize-mode\n 4. Hide these tips: C-h v haskell-process-show-debug-tips" haskell-interactive-buffer] 6 "\n\n(fn PROCESS _)"]] 9 (#$ . 2832)]) #@60 Get the Haskell session, throws an error if not available. (defalias 'haskell-commands-process #[0 "\300\301 !\206\n\302\303!\207" [haskell-session-process haskell-session-maybe error "No Haskell session/process associated with this\n buffer. Maybe run M-x haskell-session-change?"] 2 (#$ . 4436)]) #@28 Clear the current process. (defalias 'haskell-process-clear #[0 "\300\301 !\210\302\301 \303\304#\207" [haskell-process-reset haskell-commands-process haskell-process-set command-queue nil] 4 (#$ . 4747) nil]) #@33 Interrupt the process (SIGINT). (defalias 'haskell-process-interrupt #[0 "\300\301\302 !!\207" [interrupt-process haskell-process-process haskell-commands-process] 3 (#$ . 4963) nil]) #@206 Query a PROCESS to reload MODULE-BUFFER with -fbyte-code set. Restores -fobject-code after reload finished. MODULE-BUFFER is the actual Emacs buffer of the module being loaded. (fn PROCESS MODULE-BUFFER) (defalias 'haskell-process-reload-with-fbytecode #[514 "\300\301\"\210\300\302\303\304\305\306\307!#\"\"\210\300\310\"\207" [haskell-process-queue-without-filters ":set -fbyte-code" format ":load \"*%s\"" replace-regexp-in-string "\"" "\\\\\"" buffer-file-name ":set -fobject-code"] 11 (#$ . 5154)]) #@35 History list for session targets. (defvar haskell-cabal-targets-history nil (#$ . 5670)) #@57 Hoogle for IDENT, return a list of modules. (fn IDENT) (defalias 'haskell-process-hoogle-ident #[257 "\300\301\302\"r\211q\210\303\304\"\216\305\306\307\302\307\310\311&eb\210\211\312U?\206+\313\314!\206+\313\315!?\205H\316\317\307\302#\203@\320\321\307\211#\210\202/\322\323\324\325 \326\"\"\262*\207" [generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] call-process "hoogle" nil "search" "--exact" 0 looking-at "^No results found" "^package " re-search-forward "^\\([^ ]+\\).*$" replace-match "\\1" cl-remove-if #[257 "\211\300\230\207" [""] 3 "\n\n(fn A)"] split-string buffer-string "\n"] 10 (#$ . 5765)]) #@75 Search with haskell-docs for IDENT, return a list of modules. (fn IDENT) (defalias 'haskell-process-haskell-docs-ident #[257 "\301\302\303\304\305\306\"\307\216rq\210\310\311\312\306\312\313 &\210*rq\210\314 +\315\"\"\207" [standard-output cl-remove-if-not #[257 "\300\301\"\207" [string-match "^[[:upper:]][[:alnum:]_'.]+$"] 4 "\n\n(fn A)"] split-string generate-new-buffer " *string-output*" t #[0 "\301!\207" [standard-output kill-buffer] 2] call-process "haskell-docs" nil "--modules" buffer-string "\n"] 11 (#$ . 6453)]) #@71 Query PROCESS `:m +' command to import MODULES. (fn PROCESS MODULES) (defalias 'haskell-process-import-modules #[514 "\205\301\302\303B\304\305\211%\"\207" [haskell-process-auto-import-loaded-modules haskell-process-queue-command record haskell-command #[257 "\300@\301\302\303\304A\305#\"\"\207" [haskell-process-send-string format ":m + %s" mapconcat identity " "] 9 "\n\n(fn STATE)"] nil] 10 (#$ . 6995)]) #@50 Describe the given identifier IDENT. (fn IDENT) (defalias 'haskell-describe #[257 "\305\306\307P!!\310\311D\312\313!\"\210\212\314\211\223\210\315 B\316\nB\317 \320 \321!\211\314\211r\320 q\210\203\254\314:\203\246@\262\322\323\324#\325\326\236A@\211\203T\211\327P\202U\330\262\331\236A@\332\261\210\333\236A@\211\203q\334\335\"\336\261\210\210\333\236A@\211\314:\203\217@\262\211\336\261\210A\262\202z\266\336c\266\337\236A@c\210\332c\210A\262\2025\266\314\202\261\340\261)\262rq\210\341\314\"\262)\342\343!\203\314\343\"\202\315\211)\266\204+\207" [help-window-point-marker temp-buffer-window-setup-hook temp-buffer-window-show-hook help-window-old-frame standard-output read shell-command-to-string "haskell-docs --sexp " help-setup-xref haskell-describe called-interactively-p interactive nil help-mode-setup help-mode-finish selected-frame help-buffer temp-buffer-window-setup propertize font-lock-face ((:inherit font-lock-type-face :underline t)) " is defined in " module " " "" package "\n\n" type haskell-fontify-as-mode haskell-mode "\n" documentation "No results for " temp-buffer-window-show functionp help-window-setup] 13 (#$ . 7420) (byte-code "\300\301\302 \"C\207" [read-from-minibuffer "Describe identifier: " haskell-ident-at-point] 3)]) #@173 Grep the effective project for the symbol at point. Very useful for codebase navigation. Prompts for an arbitrary regexp given a prefix arg PROMPT. (fn &optional PROMPT) (defalias 'haskell-rgrep #[256 "\211\203\n\300\301!\202\f\302 \303\304\305\306 !#\207" [read-from-minibuffer "Look for: " haskell-ident-at-point rgrep "*.hs *.lhs *.hsc *.chs *.hs-boot *.lhs-boot" haskell-session-current-dir haskell-interactive-session] 7 (#$ . 8741) "P"]) #@133 Print info on the identifier at point. If PROMPT-VALUE is non-nil, request identifier via mini-buffer. (fn &optional PROMPT-VALUE) (defalias 'haskell-process-do-info #[256 "\300 \204\n\211\205R\301\302\303\203\304\305\"\202#?\205!\306 \211\203,\307\310\"\202I\311\230\2036\312\202I\307\313\314\"\203B\315\202C\316\206H\"\211\205P\317!\266\203\207" [haskell-ident-at-point replace-regexp-in-string "^!\\([A-Z_a-z]\\)" "\\1" read-from-minibuffer "Info: " haskell-utils-parse-import-statement-at-point format ":browse! %s" "" nil string-match "^[a-zA-Z_]" ":info %s" ":info (%s)" haskell-process-show-repl-response] 8 (#$ . 9197) "P"]) #@154 Print the type of the given expression. Given INSERT-VALUE prefix indicates that result type signature should be inserted. (fn &optional INSERT-VALUE) (defalias 'haskell-process-do-type #[256 "\211\203\301 \207\302 \203\303\304 \305 \"\202\306 \211\205:\307\310\311\312#)\266\203?\205:\313\310\311\312#)\266\203?\211\205h\314\315\316\310\311\312#)\266\203\204`\317\310\311\312#)\266\203\203d\320\202e\321\"!\207" [inhibit-changing-match-data haskell-process-insert-type use-region-p buffer-substring-no-properties region-beginning region-end haskell-ident-at-point "\\`[[:space:]]*\\'" nil t string-match "\n" haskell-process-show-repl-response format "\\`(" "\\`[_[:alpha:]]" ":type %s" ":type (%s)"] 12 (#$ . 9864) "P"]) #@473 Jump to the definition. Jump to definition of identifier at point by consulting GHCi, or tag table as fallback. Remember: If GHCi is busy doing something, this will delay, but it will always be accurate, in contrast to tags, which always work but are not always accurate. If the definition or tag is found, the location from which you jumped will be pushed onto `xref--marker-ring', so you can return to that position with `xref-pop-marker-stack'. (fn &optional NEXT-P) (defalias 'haskell-mode-jump-to-def-or-tag #[256 "\300 \211\205\301 \211\205\302\303 !\211\203$\304!\210\301 \232?\205'\305!\207\306\307!\207" [haskell-session-maybe point-marker haskell-mode-find-def haskell-ident-at-point haskell-mode-handle-generic-loc xref-push-marker-stack call-interactively haskell-mode-tag-find] 6 (#$ . 10629) "P"]) #@83 Go to the location of the thing at point. Requires the :loc-at command from GHCi. (defalias 'haskell-mode-goto-loc #[0 "\300 \211\205 \301!\207" [haskell-mode-loc-at haskell-mode-goto-span] 3 (#$ . 11458) nil]) #@87 Jump to the SPAN, whatever file and line and column it needs to get there. (fn SPAN) (defalias 'haskell-mode-goto-span #[257 "\300 \210\301\302\303\304\"\305\306 !\"!\210eb\210\303\307\"Sy\210\303\310\"u\207" [xref-push-marker-stack find-file expand-file-name plist-get :path haskell-session-cabal-dir haskell-interactive-session :start-line :start-col] 6 (#$ . 11677)]) #@89 Get the identifier at the point and insert its type. Use GHCi's :type if it's possible. (defalias 'haskell-process-insert-type #[0 "\300 \211\205&\301 \302\303\304\"\203\305\202\306\"\307\310\311pE\312\313\314%\"\266\202\207" [haskell-ident-at-point haskell-interactive-process format string-match "^[_[:lower:][:upper:]]" ":type %s" ":type (%s)" haskell-process-queue-command record haskell-command #[257 "\300@A@\"\207" [haskell-process-send-string] 4 "\n\n(fn STATE)"] nil #[514 "\300\301\"\204\300\302\"\203\303\304\"\207r\3058q\210\306 b\210\307\310\311\312\313#\"c)\207" [string-match "^Top level" "^" message "%s" 2 line-beginning-position format "%s\n" replace-regexp-in-string "\n$" ""] 8 "\n\n(fn STATE RESPONSE)"]] 11 (#$ . 12058)]) #@285 Find definition location of identifier IDENT. Uses the GHCi process to find the location. Returns nil if it can't find the identifier or the identifier isn't a string. Returns: (library ) (file ) (module ) nil (fn IDENT) (defalias 'haskell-mode-find-def #[257 "\211;\205z\300\301 \302\303\304\"\203\305\202\306\"\"\303\307\"\211\205v\310\311\"\303\312\"\211\203I\313\314\310\315\"\316\317 !\"\320\310\311\"!\320\310\321\"!F\202r\303\322\"\211\203_\323\310\315\"\310\311\"E\202p\303\324\"\211\205n\325\310\315\"D\262\262\262\262\262\262\207" [haskell-process-queue-sync-request haskell-interactive-process format string-match "^[a-zA-Z_]" ":info %s" ":info (%s)" "-- Defined \\(at\\|in\\) \\(.+\\)$" match-string 2 "\\(.+?\\):\\([0-9]+\\):\\([0-9]+\\)$" file expand-file-name 1 haskell-session-current-dir haskell-interactive-session string-to-number 3 "`\\(.+?\\):\\(.+?\\)'$" library "`\\(.+?\\)'$" module] 12 (#$ . 12843)]) #@62 Jump to definition of identifier IDENT at point. (fn IDENT) (defalias 'haskell-mode-jump-to-def #[257 "\300!\211\205\n\301!\207" [haskell-mode-find-def haskell-mode-handle-generic-loc] 4 (#$ . 13872) (byte-code "\300\301 !C\207" [haskell-string-drop-qualifier haskell-ident-at-point] 2)]) #@86 Either jump to or echo a generic location LOC. Either a file or a library. (fn LOC) (defalias 'haskell-mode-handle-generic-loc #[257 "\211@\211\300\267\2021\301\302\234!\210eb\210\303\234Sy\210\304 \305\234S\\b\207\306\307\303\234\302\234#\207\306\310\302\234\"\207\311\207" [#s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (file 8 library 32 module 42)) find-file 1 2 line-beginning-position 3 message "Defined in `%s' (%s)." "Defined in `%s'." nil] 7 (#$ . 14171)]) #@68 Get the location at point. Requires the :loc-at command from GHCi. (defalias 'haskell-mode-loc-at #[0 "\300 \203 \301 \302 B\206\303 \206``B\211\205\210\304\305 \212\306\307\310 @b\210\311 iTAb\210\311 iT\312\n@ A\"&)\"\211\203\313\314\"\203u\315\316\317\"\320\321\316\322\"!\323\321\316\324\"!S\325\321\316\326\n\"!\327\321\316\330\f\"!S\257\n\202\206\331\332\333\334#!\202\206\331\332\335\333\334#!\262\207" [region-active-p region-beginning region-end haskell-spanable-pos-at-point haskell-process-queue-sync-request haskell-interactive-process format ":loc-at %s %d %d %d %d %s" buffer-file-name line-number-at-pos buffer-substring-no-properties string-match "\\(.*?\\):(\\([0-9]+\\),\\([0-9]+\\))-(\\([0-9]+\\),\\([0-9]+\\))" :path match-string 1 :start-line string-to-number 2 :start-col 3 :end-line 4 :end-col 5 error propertize face compilation-error "No reply. Is :loc-at supported?"] 15 (#$ . 14690)]) #@51 Change directory. (fn &optional NOT-INTERACTIVE) (defalias 'haskell-process-cd #[256 "\301 \302!\303\304\305\306\"\307#!\210\310\311 #\207" [font-lock-comment-face haskell-interactive-session haskell-session-prompt-set-current-dir haskell-process-log propertize format "Changing directory to %s ...\n" face haskell-process-change-dir haskell-interactive-process] 8 (#$ . 15635) nil]) #@151 Try to deduce a sensible default directory for SESSION and BUFFER, of which the latter defaults to the current buffer. (fn SESSION &optional BUFFER) (defalias 'haskell-session-buffer-default-dir #[513 "\300\301\"\206\300\302\"\206\303!\203\304\303!!\207\305\207" [haskell-session-get current-dir cabal-dir buffer-file-name file-name-directory "~/"] 5 (#$ . 16032)]) #@117 Prompt for the current directory. Return current working directory for SESSION. (fn SESSION &optional USE-DEFAULT) (defalias 'haskell-session-prompt-set-current-dir #[513 "\300!\301\203 \202\302\303\"\"\266\304\305\"\207" [haskell-session-buffer-default-dir haskell-session-set-current-dir haskell-utils-read-directory-name "Set current directory: " haskell-session-get current-dir] 8 (#$ . 16416)]) #@104 Change SESSION's current directory. Query PROCESS to `:cd` to directory DIR. (fn SESSION PROCESS DIR) (defalias 'haskell-process-change-dir #[771 "\300\301\302E\303\304\305%\"\207" [haskell-process-queue-command record haskell-command #[257 "\300A@\301\302AA@\"\"\207" [haskell-process-send-string format ":cd %s"] 6 "\n\n(fn STATE)"] nil #[514 "\300@AA@\"\210\301@\302\303AA@\"\"\207" [haskell-session-set-current-dir haskell-interactive-mode-echo format "Changed directory: %s"] 7 "\n\n(fn STATE _)"]] 11 (#$ . 16834)]) #@31 Send the cabal macros string. (defalias 'haskell-process-cabal-macros #[0 "\300\301 \302\"\207" [haskell-process-queue-without-filters haskell-interactive-process ":set -optP-include -optPdist/build/autogen/cabal_macros.h"] 3 (#$ . 17376) nil]) #@55 Get info of SYM and echo in the minibuffer. (fn SYM) (defalias 'haskell-process-do-try-info #[257 "\300 \301\302\303B\304\305\306%\"\207" [haskell-interactive-process haskell-process-queue-command record haskell-command #[257 "\300@\301\302A\"\203\303\304A\"\202\303\305A\"\"\207" [haskell-process-send-string string-match "^[A-Za-z_]" format ":info %s" ":info (%s)"] 6 "\n\n(fn STATE)"] nil #[514 "\300\301\"\206 \300\302\"?\205\303!\207" [string-match "^Top level" "^" haskell-mode-message-line] 5 "\n\n(fn STATE RESPONSE)"]] 10 (#$ . 17627)]) #@55 Get type of SYM and echo in the minibuffer. (fn SYM) (defalias 'haskell-process-do-try-type #[257 "\300 \301\302\303B\304\305\306%\"\207" [haskell-interactive-process haskell-process-queue-command record haskell-command #[257 "\300@\301\302A\"\203\303\304A\"\202\303\305A\"\"\207" [haskell-process-send-string string-match "^[A-Za-z_]" format ":type %s" ":type (%s)"] 6 "\n\n(fn STATE)"] nil #[514 "\300\301\"\206 \300\302\"?\205\303!\207" [string-match "^Top level" "^" haskell-mode-message-line] 5 "\n\n(fn STATE RESPONSE)"]] 10 (#$ . 18211)]) #@485 Show type of the thing at point or within active region asynchronously. This function requires GHCi 8+ or GHCi-ng. \ To make this function works sometimes you need to load the file in REPL first using command `haskell-process-load-file' bound to \[haskell-process-load-file]. Optional argument INSERT-VALUE indicates that recieved type signature should be inserted (but only if nothing happened since function invocation). (fn &optional INSERT-VALUE) (defalias 'haskell-mode-show-type-at #[256 "\300 \301!\302 p\303 B\304\305\306\f\257\307\310\311%\"\207" [haskell-command-capture-expr-bounds haskell-utils-compose-type-at-command haskell-interactive-process region-active-p haskell-process-queue-command record haskell-command #[257 "\211@A@\300 \210\301\"\207" [haskell-utils-async-watch-changes haskell-process-send-string] 6 "\n\n(fn STATE)"] nil #[514 "\3018\3028\3038\211A@@@A\304!\305!\211\306\267\202+\307\310!\207\307\311!\207\307\312\"\207\203YG\313U\203Q\203M\314 \210\212|\210b\210\315\316Qc)\207\317!\207\307\320\321!A\"\207\322 !\207" [haskell-utils-async-post-command-flag 2 3 4 haskell-utils-reduce-string haskell-utils-repl-response-error-status #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (quote 30 unknown-command 30 option-missing 34 interactive-error 38)) message "This command requires GHCi 8+ or GHCi-ng. Please read command description for details." "Could not infer type signature. You need to load file first. Also :set +c is required, see customization `haskell-interactive-set-+c'. Please read command description for details." "Wrong REPL response: %s" 1 deactivate-mark "(" ")" haskell-command-insert-type-signature "Type signature insertion was prevented. These commands were registered: %s" reverse haskell-command-echo-or-present] 14 "\n\n(fn STATE RESPONSE)"]] 15 (#$ . 18796) "P"]) (make-obsolete 'haskell-process-generate-tags 'haskell-mode-generate-tags "2016-03-14") #@202 Regenerate the TAGS table. If optional AND-THEN-FIND-THIS-TAG argument is present it is used with function `xref-find-definitions' after new table was generated. (fn &optional AND-THEN-FIND-THIS-TAG) (defalias 'haskell-process-generate-tags #[256 "\300 \301\302\303B\304\305\306%\"\207" [haskell-interactive-process haskell-process-queue-command record haskell-command #[257 "\211@\300\301!!\302!\303\"\207" [haskell-session-cabal-dir haskell-process-session haskell-cabal--compose-hasktags-command haskell-process-send-string] 7 "\n\n(fn STATE)"] nil #[514 "A\203\301\302@!!\303A!\210)\304\305!\207" [tags-file-name haskell-session-tags-filename haskell-process-session xref-find-definitions haskell-mode-message-line "Tags generated."] 5 "\n\n(fn STATE RESPONSE)"]] 10 (#$ . 20822) nil]) #@197 Add cabal's autogen dir to the GHCi search path. Add /dist/build/autogen/ to GHCi seatch path. This allows modules such as 'Path_...', generated by cabal, to be loaded by GHCi. (defalias 'haskell-process-add-cabal-autogen #[0 "\300 \301=?\205\302 \303!\304\305\"\306\307 \304\310\"\"\266\203\207" [haskell-process-type cabal-repl haskell-interactive-session haskell-session-cabal-dir format "%sdist/build/autogen/" haskell-process-queue-without-filters haskell-interactive-process ":set -i%s"] 8 (#$ . 21634)]) #@116 Unignore any ignored files. Do not ignore files that were specified as being ignored by the inferior GHCi process. (defalias 'haskell-process-unignore #[0 "\300 \301\302\303\"\204\304\305!\207\3062i\302\303\"\301:\203e@\262\307 \210\310\216\311\312\313\314\"\315\316#!\211\317\267\210\202P\320\"\210\321\262\210\202P\322!\210\323\306\301\"\266\202P\210\203]\324\325!\203]\326 \210)A\262\202\266\3010\207" [haskell-interactive-session nil haskell-session-get ignored-files message "Nothing to unignore!" --cl-block-nil-- haskell-mode-toggle-interactive-prompt-state #[0 "\300\301!\207" [haskell-mode-toggle-interactive-prompt-state t] 2] read-event propertize format "Set permissions? %s (y, n, v: stop and view file)" face minibuffer-prompt #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (121 54 118 66)) haskell-process-unignore-file t find-file throw y-or-n-p "Restart GHCi process now? " haskell-process-restart] 9 (#$ . 22176) nil]) #@51 Set the build TARGET for cabal REPL. (fn TARGET) (defalias 'haskell-session-change-target #[257 "\301\302\"\205(\303\"\210\211\230?\205(\304 \210\305\216\306\307!\203$\310!\210)\304\311!\207" [haskell-session haskell-session-get target haskell-session-set-target haskell-mode-toggle-interactive-prompt-state #[0 "\300\207" [nil] 1] y-or-n-p "Target changed, restart haskell process? " haskell-process-start t] 6 (#$ . 23183) (byte-code "\300\301\302\303#C\207" [haskell-session-choose-target "New build target: " nil haskell-cabal-targets-history] 4)]) #@244 Apply stylish-haskell to the current buffer. Use `haskell-mode-stylish-haskell-path' to know where to find stylish-haskell executable. This function tries to preserve cursor position and markers by using `haskell-mode-buffer-apply-command'. (defalias 'haskell-mode-stylish-buffer #[0 "\302 \"\207" [haskell-mode-stylish-haskell-path haskell-mode-stylish-haskell-args haskell-mode-buffer-apply-command] 3 (#$ . 23754) nil]) #@212 Execute shell command CMD with ARGS and current buffer as input and output. Use buffer as input and replace the whole buffer with the output. If CMD fails the buffer remains unchanged. (fn CMD &optional ARGS) (defalias 'haskell-mode-buffer-apply-command #[513 "\302\303!\210\304\305!\304\306!\307\211\310\311#\216\312\313\314ed\312\315 DD\312 &\210\316\317!8\320=\316\317!8\320=\203U\211\203I\321\322\"\266\203\202\205\323\312\211\211\303%\266\203\202\205r\324\325!q\210\323!\210)\321\326\"\210\327\330\303\"r\211q\210\310\331\"\216\323!\210\332\333ed\"\334#*\262\266\203+\207" [coding-system-for-read coding-system-for-write set-buffer-modified-p t make-temp-file "stylish-output" "stylish-error" utf-8 make-closure #[0 "\3021\f\303\301!0\210\202 \210\3041\303\300!0\207\210\305\207" [V0 V1 (error) delete-file (error) nil] 2] nil apply call-process-region :file 7 file-attributes 0 message "Error: %s produced no output and no error information, leaving buffer alone" insert-file-contents get-buffer-create "*haskell-mode*" "Error: %s ended with errors, leaving buffer alone, see *haskell-mode* buffer for stderr" generate-new-buffer " *temp*" #[0 "\301\300!\205 \302\300!\207" [V0 buffer-name kill-buffer] 2] display-warning buffer-substring-no-properties :debug] 15 (#$ . 24187)]) #@67 Find use cases of the identifier at point and highlight them all. (defalias 'haskell-mode-find-uses #[0 "\300 \211\205#\301\302!\210\211\303:\203 @\262\304!\210A\262\202\f\266\303\207" [haskell-mode-uses-at highlight-uses-mode 1 nil haskell-mode-make-use-highlight] 5 (#$ . 25514) nil]) #@56 Make a highlight overlay at the given SPAN. (fn SPAN) (defalias 'haskell-mode-make-use-highlight #[257 "\300 \301\302\"\216\212\303!\210\212\304eb\210\305\306\"Sy\210\305\307\"u\210`eb\210\305\310\"Sy\210\305\311\"u\210`\"+\207" [current-window-configuration make-closure #[0 "\301\300!\207" [V0 set-window-configuration] 2] haskell-mode-goto-span highlight-uses-mode-highlight plist-get :start-line :start-col :end-line :end-col] 7 (#$ . 25817)]) #@94 Get the locations of use cases for the ident at point. Requires the :uses command from GHCi. (defalias 'haskell-mode-uses-at #[0 "\300 \203 \301 \302 B\206\303 \206``B\211\205\\\304\305 \212\306\307\310 @b\210\311 iTAb\210\311 iT\312\n@ A\"&)\"\211\203S\313\314\315#\316\317\320\321\"\"\262\202Z\322\323\324\325\326#!\262\207" [region-active-p region-beginning region-end haskell-ident-pos-at-point haskell-process-queue-sync-request haskell-interactive-process format ":uses %s %d %d %d %d %s" buffer-file-name line-number-at-pos buffer-substring-no-properties split-string "\n" t cl-remove-if null mapcar #[257 "\300\301\"\2031\302\303\304\"\305\306\303\307\"!\310\306\303\311\"!S\312\306\303\313\n\"!\314\306\303\315\f\"!S\257\n\207\316\317\320\321#!\207" [string-match "\\(.*?\\):(\\([0-9]+\\),\\([0-9]+\\))-(\\([0-9]+\\),\\([0-9]+\\))" :path match-string 1 :start-line string-to-number 2 :start-col 3 :end-line 4 :end-col 5 error propertize face compilation-error] 14 "\n\n(fn LINE)"] error propertize "No reply. Is :uses supported?" face compilation-error] 13 (#$ . 26278)]) #@179 Present message in some manner depending on configuration. If variable `haskell-process-use-presentation-mode' is NIL it will output modified message MSG to echo area. (fn MSG) (defalias 'haskell-command-echo-or-present #[257 "\203 \301\302 !\303\"\207\304!\305\306\"\207" [haskell-process-use-presentation-mode haskell-process-session haskell-interactive-process haskell-presentation-present haskell-utils-reduce-string message "%s"] 5 (#$ . 27394)]) #@311 Capture position bounds of expression at point. If there is an active region then it returns region bounds. Otherwise it uses `haskell-spanable-pos-at-point` to capture identifier bounds. If latter function returns NIL this function will return cons cell where min and max positions both are equal to point. (defalias 'haskell-command-capture-expr-bounds #[0 "\300 \203 \301 \302 B\206\303 \206``B\207" [region-active-p region-beginning region-end haskell-spanable-pos-at-point] 2 (#$ . 27860)]) #@289 Insert type signature. In case of active region is present, wrap it by parentheses and append SIGNATURE to original expression. Otherwise tries to carefully insert SIGNATURE above identifier at point. Removes newlines and extra whitespace in signature before insertion. (fn SIGNATURE) (defalias 'haskell-command-insert-type-signature #[257 "\300 \206``B\211@\301!\212b\210i\302\261\210\211j\262)\207" [haskell-ident-pos-at-point haskell-utils-reduce-string "\n"] 7 (#$ . 28370)]) (provide 'haskell-commands)