emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/haskell-mode 9186f45d52 11/24: Add interactive command to


From: ELPA Syncer
Subject: [nongnu] elpa/haskell-mode 9186f45d52 11/24: Add interactive command to insert a LANGUAGE pragma
Date: Tue, 1 Nov 2022 22:58:52 -0400 (EDT)

branch: elpa/haskell-mode
commit 9186f45d520621f95136163020cefc192e235d7a
Author: Tikhon Jelvis <tikhon@jelv.is>
Commit: Tikhon Jelvis <tikhon@jelv.is>

    Add interactive command to insert a LANGUAGE pragma
    
    I need to manually add `{-# LANUGAGE _ #-}` pragmas to the top of my 
modules pretty often, so I wrote a function to do this. I've been using it for 
a few days and found it really convenient, and other people liked the idea when 
I mentioned it on Twitter.
    
    Called interactively it uses `haskell-ghc-supported-extensions` for 
completions which means less typing and no more errors like using 
`RecordWildcards` instead of `RecordWildCards`.
    
    I bound it to `C-c C-e` on my own setup, but not sure whether it makes 
sense to include a keybinding for it by default.
---
 haskell-commands.el         | 10 ++++++++++
 tests/haskell-mode-tests.el |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/haskell-commands.el b/haskell-commands.el
index fba236d47e..89f02e5991 100644
--- a/haskell-commands.el
+++ b/haskell-commands.el
@@ -36,6 +36,7 @@
 (require 'haskell-utils)
 (require 'highlight-uses-mode)
 (require 'haskell-cabal)
+(require 'haskell-ghc-support)
 
 (defcustom haskell-mode-stylish-haskell-path "stylish-haskell"
   "Path to `stylish-haskell' executable."
@@ -935,5 +936,14 @@ newlines and extra whitespace in signature before 
insertion."
         (insert sig "\n")
         (indent-to col)))))
 
+(defun haskell-mode-add-language-pragma (extension)
+  "Insert a {-# LANGUAGE _ #-} pragma at the top of the current
+buffer for the given extension."
+  (interactive
+   (list (completing-read "Extension: " haskell-ghc-supported-extensions)))
+  (save-excursion
+    (beginning-of-buffer)
+    (insert (format "{-# LANGUAGE %s #-}\n" extension))))
+
 (provide 'haskell-commands)
 ;;; haskell-commands.el ends here
diff --git a/tests/haskell-mode-tests.el b/tests/haskell-mode-tests.el
index d31fe55704..e6c9264f36 100644
--- a/tests/haskell-mode-tests.el
+++ b/tests/haskell-mode-tests.el
@@ -666,4 +666,13 @@ moves over sexps."
          (goto-char (point-min))
          (should (looking-at-p "main = return ()")))))))
 
+(ert-deftest haskell-mode-add-language-pragma-with-existing-text ()
+  (with-temp-buffer
+    (haskell-mode)
+    (insert "module Main where\n")
+    (end-of-buffer)
+    (haskell-mode-add-language-pragma "ViewPatterns")
+    (should (string= (buffer-string)
+                     "{-# LANGUAGE ViewPatterns #-}\nmodule Main where\n"))))
+
 (provide 'haskell-mode-tests)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]