fsharp / fsharp/emacs-fsharp-mode

fsharp-mode-project-root breaks when the file doesn't exist

Open
#340 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Emacs Lisp
Stars
215
Forks
65
PR merge metrics
No merged PRs in 30d

Description

### Description
fsharp-mode adds fsharp-mode-project-root to project-find-functions, which is run by project-current. Such functions should return nil if they can't find a project; otherwise, they make cause project-current as a whole to error.

This causes Emacs to break if e.g. there's a buffer visiting a file which hasn't yet been created.

### Repro steps

Please provide the steps required to reproduce the problem

1. M-: (fsharp-mode-project-root "/non/existent")

### Expected behavior

It should return `nil` as is the project-find-functions spec

### Actual behavior
It errors:
```
Debugger entered--Lisp error: (file-missing "Opening directory" "No such file or directory" "/non")
directory-files("/non/" full ".*\\.sln$")
fsharp-mode-search-upwards(".*\\.sln$" "/non/")
fsharp-mode/find-sln("/non/existent")
fsharp-mode/find-sln-or-fsproj("/non/existent")
fsharp-mode-project-root("/non/existent")
eval((fsharp-mode-project-root "/non/existent") t)
eval-expression((fsharp-mode-project-root "/non/existent") nil nil 127)
funcall-interactively(eval-expression (fsharp-mode-project-root "/non/existent") nil nil 127)
call-interactively(eval-expression nil nil)
command-execute(eval-expression)
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.