Subject: Re: [PATCH] gnu: emacs-haskell-mode: Fix build.

From: Liliana Marie Prikler <[email-masked]>
Date: Thu, 19 May 2022 21:09:14 +0200

Hi,

Am Mittwoch, dem 18.05.2022 um 23:31 +0900 schrieb Taiju HIGASHI:
> * gnu/packages/emacs-xyz.scm (emacs-haskell-mode): Fix build.
> ---
>  gnu/packages/emacs-xyz.scm                    |   9 +-
>  .../emacs-haskell-mode-fix-tests.patch        | 282
> ++++++++++++++++++
>  2 files changed, 289 insertions(+), 2 deletions(-)
>  create mode 100644 gnu/packages/patches/emacs-haskell-mode-fix-
> tests.patch
> 
> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
> index 529e9329d6..9d9669f383 100644
> --- a/gnu/packages/emacs-xyz.scm
> +++ b/gnu/packages/emacs-xyz.scm
> @@ -1553,11 +1553,16 @@ (define-public emacs-haskell-mode
>               (commit version)))
>         (file-name (git-file-name name version))
>         (sha256
> -        (base32
> "0zxbacqzr84krmhqpvzndnvlcjh1gs1x20ys0dykgd7chyhci5j5"))))
> +        (base32
> "0zxbacqzr84krmhqpvzndnvlcjh1gs1x20ys0dykgd7chyhci5j5"))
> +        ;; Submitted for inclusion upstream.
> +        ;; Not identical patches due to different target versions.
> +        ;; (see: https://github.com/haskell/haskell-mode/pull/1780)
> +       (patches
> +        (search-patches "emacs-haskell-mode-fix-tests.patch"))))
>      (propagated-inputs
>       (list emacs-dash))
>      (native-inputs
> -     (list emacs-minimal emacs-el-search emacs-stream texinfo))
> +     (list emacs-minimal emacs-el-search emacs-stream texinfo git))
There are other ways of suppressing errors caused by git.  One of them
would be to set vc-handled-backends to nil for the tests.

> +-  "Classify the current line into 'section-header 'subsection-
> header 'section-data 'comment and 'empty '"
> ++  "Classify the current line into 'section-header 'subsection-
> header
> ++'section-data 'comment and 'empty '"
LGTM.
> +-  "Enumerate .cabal targets. PROCESS-TYPE determines the format of
> the returned target."
> ++  "Enumerate .cabal targets. PROCESS-TYPE determines the format of
> the
> ++returned target."
LGTM.

> +-Module names in exposed-modules and other-modules are expanded by
> replacing each dot (.) in the module name with a forward slash (/)
> and appending \".hs\"
> ++Module names in exposed-modules and other-modules are expanded by
> ++replacing each dot (.) in the module name with a forward slash (/)
> and
> ++appending \".hs\"
LGTM.

> +-  "Default build command to use for `haskell-cabal-build' when a
> cabal file is detected.
> ++  "Default build command to use for `haskell-cabal-build' when a
> cabal
> ++file is detected.
LGTM.

> +-  "Alternative build command to use when `haskell-cabal-build' is
> called with a negative prefix argument.
> ++  "Alternative build command to use when `haskell-cabal-build' is
> ++called with a negative prefix argument.
LGTM.

> +-  "Default build command to use for `haskell-stack-build' when a
> stack file is detected.
> ++  "Default build command to use for `haskell-stack-build' when a
> stack
> ++file is detected.x
Additional x.

> +-  "Alternative build command to use when `haskell-stack-build' is
> called with a negative prefix argument.
> ++  "Alternative build command to use when `haskell-stack-build' is
> ++called with a negative prefix argument.
LGTM.

> +-  "Default build command to use for `haskell-cabal-build' when no
> cabal or stack file is detected.
> ++  "Default build command to use for `haskell-cabal-build' when no
> ++cabal or stack file is detected.
LGTM.

> +-  "Controls whether to use cabal, stack, or ghc to compile.
> +-   Auto (the default) means infer from the presence of a cabal or
> stack spec file,
> +-   following same rules as haskell-process-type."
> ++  "Controls whether to use cabal, stack, or ghc to compile.  Auto
> (the
> ++   default) means infer from the presence of a cabal or stack spec
> ++   file, following same rules as haskell-process-type."
LGTM.

> +-  (let (htype dir)                      
> ++  (let (htype dir)
Indentation change?  Suppress those, you want to make the diff as small
as possible.

> +-  "The way to run cabal comands. It takes two arguments -- the
> directory and the command.
> ++  "The way to run cabal comands. It takes two arguments -- the
> ++directory and the command.
LGTM.

> +-  "Suggest adding OverloadedStrings pragma to file when getting
> type mismatches with [Char]."
> ++  "Suggest adding OverloadedStrings pragma to file when getting
> type
> ++mismatches with [Char]."
LGTM.

> +-  "Looks for cabal and stack spec files. 
> +-   When found, returns a pair (TAG . DIR) 
> +-   where TAG is 'cabal-project, 'cabal-sandbox. 'cabal, or 'stack; 
> ++  "Looks for cabal and stack spec files.
> ++   When found, returns a pair (TAG . DIR)
> ++   where TAG is 'cabal-project, 'cabal-sandbox. 'cabal, or 'stack;
LGTM.

> +-  "Puts point to the next following symbol, or to end if there are
> no more symbols in the sexp."
> ++  "Puts point to the next following symbol, or to end if there are
> no
> ++more symbols in the sexp."
LGTM.

> +-  "Generate a regex for searching for any occurrence of the prompt\
> ++  "Generate a regex for searching for any occurrence of the prompt
LGTM, but you might want to shorten the docstring so that the first
line is a synopsis.  This would make it easier for upstream to accept.

> +-- 'template-haskell-quote: for a string of apostrophes for template
> haskell
> +-- 'template-haskell-quasi-quote: for a string of apostrophes for
> template haskell
> ++- 'template-haskell-quote: for a string of apostrophes for template
> ++  haskell
> ++- 'template-haskell-quasi-quote: for a string of apostrophes for
> ++  template haskell
LGTM.

> +-  "If point is in an SCC annotation, kill the annotation. 
> Otherwise, try to insert a new annotation."
> ++  "If point is in an SCC annotation, kill the annotation.
> ++Otherwise, try to insert a new annotation."
LGTM.

> +-  "Template string that will be inserted in new haskell buffers via
> `haskell-auto-insert-module-template'.")
> ++  "Template string that will be inserted in new haskell buffers via
> ++`haskell-auto-insert-module-template'.")
LGTM.

> +-  "Shift the nested off-side-rule block adjacent to point by COLS
> columns to the right.
> ++  "Shift the nested off-side-rule block adjacent to point by COLS
> ++columns to the right.
LGTM.

> +-  "Try to send a string to the process's process. Ask to restart if
> it's not running."
> ++  "Try to send a string to the process's process. Ask to restart if
> ++it's not running."
LGTM.

> +-  "Run a loading-ish COMMAND that wants to pick up type errors\
> ++  "Run a loading-ish COMMAND that wants to pick up type errors
As above, what is "loading-ish", are "things like that" relevant, etc.
> +-  "Regular expression for matching multiline prompt (the one inside
> :{ ... :} blocks).")
> ++  "Regular expression for matching multiline prompt (the one inside
> ++:{ ... :} blocks).")
LGTM.

> +-    ((haskell-mode . ((haskell-w3m-haddock-dirs .
> (\"/home/chris/Projects/foobar/.hsenv/cabal/share/doc\")))))
> ++    ((haskell-mode .
> ++      ((haskell-w3m-haddock-dirs .
> ++       (\"/home/chris/Projects/foobar/.hsenv/cabal/share/doc\")))))
Who is chris?  But fair enough, the indentation should be right.

Cheers