{"id":19548531,"url":"https://github.com/goswinr/fesh","last_synced_at":"2025-04-13T05:08:33.807Z","repository":{"id":257812821,"uuid":"600576619","full_name":"goswinr/Fesh","owner":"goswinr","description":"F# scripting editor for Windows","archived":false,"fork":false,"pushed_at":"2025-04-09T00:04:55.000Z","size":13805,"stargazers_count":119,"open_issues_count":6,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T05:08:29.532Z","etag":null,"topics":["avalonedit","fsharp","fsharp-interactive","fsi","repl","scripting"],"latest_commit_sha":null,"homepage":"","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goswinr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-11T23:00:44.000Z","updated_at":"2025-04-07T01:23:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"356db72d-913f-49b6-8ee9-be6dab84daf6","html_url":"https://github.com/goswinr/Fesh","commit_stats":null,"previous_names":["goswinr/fesh"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goswinr%2FFesh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goswinr%2FFesh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goswinr%2FFesh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goswinr%2FFesh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goswinr","download_url":"https://codeload.github.com/goswinr/Fesh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665747,"owners_count":21142123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonedit","fsharp","fsharp-interactive","fsi","repl","scripting"],"created_at":"2024-11-11T03:56:06.904Z","updated_at":"2025-04-13T05:08:33.787Z","avatar_url":"https://github.com/goswinr.png","language":"F#","readme":"![Logo](https://raw.githubusercontent.com/goswinr/Fesh/main/Media/logo128.png)\n\n# Fesh\n[![Fesh on nuget.org](https://img.shields.io/nuget/v/Fesh.svg)](https://nuget.org/packages/Fesh)\n[![Build](https://github.com/goswinr/Fesh/actions/workflows/build.yml/badge.svg?event=push)](https://github.com/goswinr/Fesh/actions/workflows/build.yml)\n[![Check NuGet](https://github.com/goswinr/Fesh/actions/workflows/outdatedNuget.yml/badge.svg)](https://github.com/goswinr/Fesh/actions/workflows/outdatedNuget.yml)\n[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fgoswinr%2FFesh\u0026count_bg=%2379C83D\u0026title_bg=%23555555\u0026icon=github.svg\u0026icon_color=%23E7E7E7\u0026title=hits\u0026edge_flat=false)](https://hits.seeyoufarm.com)\n![code size](https://img.shields.io/github/languages/code-size/goswinr/Fesh.svg)\n[![license](https://img.shields.io/github/license/goswinr/Fesh)](LICENSE)\n\nFesh is an  **F**# **E**ditor \u0026 **S**cripting **H**ost.\u003cbr\u003e\nOn Windows.\n\nIt is designed for embedding F# as application scripting tool.\u003cbr\u003e\nBut it works standalone just as well.\n\n![Screenshot](https://raw.githubusercontent.com/goswinr/Fesh/main/Media/screen2.png)\n\nIt is based on the excellent [AvalonEdit](https://github.com/goswinr/AvalonEditB), that is why it only works on Windows (for now).\u003cbr\u003e\nThe editor supports F# 9.0 and has modern IDE features like semantic syntax highlighting, type-info and autocomplete.\u003cbr\u003e\nUnlike a typical F# REPL this editor has the input and the output in two separate windows.\u003cbr\u003e\nJust [like Don Syme always wanted it](https://github.com/dotnet/fsharp/issues/2161#issuecomment-270465310).\u003cbr\u003e\nYou can even color the output with [Fescher](https://www.nuget.org/packages/Fesher).\n\nContrary to most F# editors, it uses [FSharp.Compiler.Service](https://www.nuget.org/packages/FSharp.Compiler.Service) in the same process as the UI.\u003cbr\u003e\nThere is no separate language server or FSI process.\u003cbr\u003e\nTherefore,  Fesh can easily be hosted in other apps to create an embedded application scripting tool.\u003cbr\u003e\nThis was in fact the primary motivation for creating Fesh.\u003cbr\u003e\nIt is public since 2024.\u003cbr\u003e\nBut I started prototyping it in 2017. I used it for scripting in Rhino3D professionally since 2019.\u003cbr\u003e\nInitially I used the Tsunami F# editor, like seen in [my talk on the Louvre Abu Dhabi Dome](https://www.youtube.com/watch?v=ZY-bvZZZZnE).\u003cbr\u003e\nBut it is no longer available. So I created Fesh.\n\nFor hosting there is the nuget package [Fesh](https://www.nuget.org/packages/Fesh/). See hosting examples\n[Fesh.Rhino](https://github.com/goswinr/Fesh.Rhino) and [Fesh.Revit](https://github.com/goswinr/Fesh.Revit).\n\n## Features\n\n### Syntax Highlighting\nInitial static syntax highlighting is done via AvalonEdit's regex based highlighting.\u003cbr\u003e\nSee [SyntaxHighlightingFSharp.xshd](https://github.com/goswinr/Fesh/blob/main/Src/SyntaxHighlightingFSharp.xshd).\u003cbr\u003e\nThe F# Compiler Service provides additional semantic highlighting.\u003cbr\u003e\nIf you want different colors go the menu: `About` -\u003e `Open and watch SyntaxHighlighting in VS Code`.\u003cbr\u003e\nYou wil see any changes upon every save in VS Code.\n\n### Auto complete\nAuto complete works on enter and dot, also when typing in the middle of a word.\n\n### Type info\nThe type info includes the inferred signature.\u003cbr\u003e\nAll of the xml docs and information about the path of the containing assembly.\n\n### Status bar\nThe statusbar at the bottom shows compiler error count, click on it to scroll to the first error.\n\n### Selection highlighting\nSelected text is highlighted in both code and output window. The count is shown in the status bar.\n\n### Drag and drop\nDrag any file or folder into the editor to get the full path as a string at the cursor position.\u003cbr\u003e\nFor *.dlls it will be at the top and prefixed with `#r`.\u003cbr\u003e\nFor *.fsx it will be at the top and prefixed with `#load`.\n\n### Font\nThe default font is [Cascadia Mono](https://github.com/microsoft/cascadia-code).\u003cbr\u003e\nBesides italic it also supports a cursive script mode. Fesh is using cursive for comments.\u003cbr\u003e\nTo enable ligatures set the font to `Cascadia Code`.\u003cbr\u003e\nYou can change the font in the 'Settings.txt' file at `%APPDATA%\\Local\\Fesh\\Settings\\Standalone\\Settings.txt`.\u003cbr\u003e\nOr via the menu: `About` -\u003e `Open Settings Folder`.\n\n## How to install the  Standalone App\n\n### Installer\n\nThe recommended way is to run the Setup.exe from [Releases](https://github.com/goswinr/Fesh/releases).\u003cbr\u003e\nFesh will automatically offer to update itself when a new version is available.\u003cbr\u003e\nThere is a .NET 9 and a .NET 4.8 version. Apart from the runtime they are the same.\n\nThe installer is created with [Velopack](https://velopack.io) and digitally signed.\n\nNo admin rights are required to install or run the app.\u003cbr\u003e\nThe app will be installed in `\\AppData\\Local\\Fesh`.\u003cbr\u003e\nA shortcut will be created on the desktop.\n\nThere is also a portable package in each release.\u003cbr\u003e\nExtract that zip and place it wherever you'd like.\u003cbr\u003e\nIt has identical functionality to the installed app,\u003cbr\u003e\nbut keeps it's Settings folder in the same directory.\u003cbr\u003e\nThere is a \".portable\" file in the folder to indicate that.\u003cbr\u003e\nIt will also automatically offer to update itself when a new version is available.\n\n\n###  Build from source\n\nBuild from the source with:\n\n```bash\ndotnet build FeshStandalone.fsproj\n```\nYou will still get notifications about new releases, but you have to install them manually.\n\n\n## How to host Fesh in another app\n\nUse the nuget package [Fesh](https://www.nuget.org/packages/Fesh/).\u003cbr\u003e\nOr, to build the Fesh nuget package run:\n\n```bash\ndotnet build FeshHosting.fsproj\n```\n\n\n## Release Notes\nFor changes in each release see the  [CHANGELOG.md](https://github.com/goswinr/Fesh/blob/main/CHANGELOG.md)\n\n## License\nFesh is licensed under the [MIT License](https://github.com/goswinr/Fesh/blob/main/LICENSE.md).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoswinr%2Ffesh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoswinr%2Ffesh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoswinr%2Ffesh/lists"}