# csharp-mode

> major-mode for editing C# in emacs

**Wikidata**: [Q108429209](https://www.wikidata.org/wiki/Q108429209)  
**Source**: https://4ort.xyz/entity/csharp-mode

## Summary
csharp-mode is a major mode for the GNU Emacs text editor, designed specifically for editing source code written in the C# programming language. It functions as an Emacs extension, providing a specialized environment for C# developers within Emacs. Distributed as free software, it is officially available through the GNU ELPA package repository.

## Key Facts
- **Primary Function:** Source code editor and major mode for C# within GNU Emacs.
- **Creator:** Theodor Thornhill, a programmer and violinist, created the mode in 2020.
- **Type:** Free software, Emacs extension.
- **Programming Language:** Written in Emacs Lisp.
- **Distribution:** Part of the official GNU ELPA (Emacs Lisp Package Archive) since August 25, 2021.
- **Latest Stable Version:** Version 1.1.1 was released on November 24, 2021.
- **Platform Compatibility:** Runs on GNU Emacs on operating systems including Microsoft Windows, macOS, BSD, and other Unix-like systems.
- **Official Repository:** The primary source code repository is hosted on GitHub.

## FAQs
### Q: What is csharp-mode?
A: csharp-mode is a specialized environment, or "major mode," for the GNU Emacs text editor that provides features for writing and editing C# source code. It is an extension written in Emacs Lisp that integrates C# development into the Emacs ecosystem.

### Q: Who created csharp-mode?
A: csharp-mode was created in 2020 by Theodor Thornhill, who is also a programmer and violinist.

### Q: How is csharp-mode installed or distributed?
A: csharp-mode is distributed as free software primarily through the official GNU Emacs Lisp Package Archive (GNU ELPA), which makes it easily installable for Emacs users. Its source code is also available in its official GitHub repository.

## Why It Matters
csharp-mode is significant because it provides a dedicated, integrated development environment for the C# programming language within the highly extensible and long-standing GNU Emacs text editor. This bridges the gap between the Microsoft-centric C# ecosystem and the world of traditional, customizable Unix-like development tools. By offering a "major mode," it supplies a full-featured editing environment, not just simple syntax highlighting, allowing developers to leverage Emacs's powerful editing capabilities for C# projects.

Its inclusion in the official GNU ELPA package repository signifies its stability and adherence to GNU standards, making it a trusted and accessible tool for the Emacs community. As free software, it aligns with the core philosophy of the GNU project, allowing users to freely study, modify, and share the software. This ensures that the C# development experience in Emacs can be maintained and improved by the community itself.

## Notable For
- **Dedicated C# Environment:** Provides a "major-mode," a core Emacs concept for a full-featured, language-specific editing environment, tailored specifically for C#.
- **Official GNU Package:** Its inclusion in the GNU ELPA (Emacs Lisp Package Archive) makes it an officially distributed and easily installable package for all GNU Emacs users.
- **Cross-Platform Support:** It is designed to run on any operating system that supports GNU Emacs, including Windows, macOS, BSD, and various Unix-like systems.
- **Free Software:** The mode is distributed as free software, granting users the freedom to run, study, change, and redistribute the source code.

## Body
### Overview and Purpose
csharp-mode is a major mode for the GNU Emacs platform, functioning as a source code editor for the C# language. It is classified as an Emacs extension and a software library for GNU Emacs. The project is also known by the alias `Csharp-Mode`.

### Development and Distribution
- **Creator:** The mode was created by Theodor Thornhill in 2020.
- **Programming Language:** It is written entirely in Emacs Lisp.
- **Source Code:** The primary source code repository is hosted on GitHub at `https://github.com/emacs-csharp/csharp-mode.git`. Additional mirrors exist on GNU Savannah.
- **Distribution:** It has been officially distributed through the GNU ELPA (Emacs Lisp Package Archive) since August 25, 2021.
- **License:** It is distributed as free software.

### Version History
A series of stable versions were released in 2021, marking its inclusion in GNU ELPA:
- **Version 1.0.0:** August 25, 2021
- **Version 1.0.2:** August 26, 2021
- **Version 1.1.0:** November 15, 2021
- **Version 1.1.1:** November 24, 2021

Earlier versions, such as 0.8.7 (December 1, 2014) and 0.8.12 (January 6, 2016), were also released.

### System Requirements and Compatibility
- **Platform:** Requires an installation of GNU Emacs.
- **Operating Systems:** It is compatible with Microsoft Windows, macOS, BSD, and other Unix-like operating systems.

### Package Identifiers
csharp-mode is available in several package repositories under the following names:
- **GNU ELPA:** `csharp-mode`
- **Guix:** `emacs-csharp-mode`
- **FreeBSD Port:** `lang/csharp-mode.el`
- **Gentoo Package:** `app-emacs/csharp-mode`

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareSourceCode",
  "name": "csharp-mode",
  "description": "A major-mode for editing C# source code in the GNU Emacs text editor.",
  "url": "https://github.com/emacs-csharp/csharp-mode",
  "additionalType": "http://schema.org/SoftwareApplication",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "Emacs Lisp"
  },
  "operatingSystem": [
    "Microsoft Windows",
    "macOS",
    "BSD",
    "Unix-like"
  ],
  "creator": {
    "@type": "Person",
    "name": "Theodor Thornhill"
  },
  "codeRepository": "https://github.com/emacs-csharp/csharp-mode.git",
  "isFree": true
}

## References

1. [Csharp-Mode version 1.0.0. 2021](https://lists.gnu.org/archive/html/gnu-emacs-sources/2021-08/msg00068.html)
2. [Release 1.0.0. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/1.0.0)
3. [Csharp-Mode version 1.0.2. 2021](https://lists.gnu.org/archive/html/gnu-emacs-sources/2021-08/msg00071.html)
4. [Release 1.0.2. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/1.0.2)
5. [Csharp-Mode version 1.1.0. 2021](https://lists.gnu.org/archive/html/gnu-emacs-sources/2021-11/msg00024.html)
6. [Release 1.1.0. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/1.1.0)
7. [Csharp-Mode version 1.1.1. 2021](https://lists.gnu.org/archive/html/gnu-emacs-sources/2021-11/msg00038.html)
8. [Release 1.1.1. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/1.1.1)
9. [Release 0.8.7. 2014](https://github.com/emacs-csharp/csharp-mode/releases/tag/v.0.8.7)
10. [Release 0.8.8. 2014](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.8.8)
11. [Release 0.8.9. 2015](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.8.9)
12. [Release 0.8.10. 2015](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.8.10)
13. [Release 0.8.11. 2015](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.8.11)
14. [Release 0.8.12. 2016](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.8.12)
15. [Release 0.9.0. 2016](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.9.0)
16. [Release 0.9.2. 2018](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.9.2)
17. [Release 0.10.0. 2020](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.10.0)
18. [Release 0.11.0. 2020](https://github.com/emacs-csharp/csharp-mode/releases/tag/v0.11.0)
19. [Release 0.12.0. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/0.12.0)
20. [Release 1.0.1. 2021](https://github.com/emacs-csharp/csharp-mode/releases/tag/1.0.1)
21. [Csharp-Mode version 2.0.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00077.html)
22. [Source](https://elpa.gnu.org/packages/csharp-mode.html)