diff options
Diffstat (limited to 'oni-csharp')
| -rw-r--r-- | oni-csharp/Eldev | 13 | ||||
| -rw-r--r-- | oni-csharp/oni-csharp.el | 259 | ||||
| -rw-r--r-- | oni-csharp/snippets/csharp-mode/testm | 9 | ||||
| -rw-r--r-- | oni-csharp/snippets/nxml-mode/Import | 6 |
4 files changed, 0 insertions, 287 deletions
diff --git a/oni-csharp/Eldev b/oni-csharp/Eldev deleted file mode 100644 index 1ba3134..0000000 --- a/oni-csharp/Eldev +++ /dev/null @@ -1,13 +0,0 @@ -; -*- mode: emacs-lisp; lexical-binding: t -*- - -;; Uncomment some calls below as needed for your project. -(eldev-use-package-archive 'gnu-elpa) -;(eldev-use-package-archive 'nongnu-elpa) -(eldev-use-package-archive 'melpa) -(eldev-use-package-archive `("oni" . ,(expand-file-name "../bin"))) - -(eldev-use-plugin 'autoloads) - -(setf eldev-files-to-package - `(:or ,eldev-files-to-package - '("*.el" "./snippets/**/*"))) diff --git a/oni-csharp/oni-csharp.el b/oni-csharp/oni-csharp.el deleted file mode 100644 index 8451d93..0000000 --- a/oni-csharp/oni-csharp.el +++ /dev/null @@ -1,259 +0,0 @@ -;;; oni-csharp.el --- C# Configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2019 Tom Willemse - -;; Author: Tom Willemse <tom@ryuslash.org> -;; Keywords: local -;; Version: 2023.0525.001714 -;; Package-Requires: (csharp-mode oni-company oni-flycheck oni-yasnippet oni-hydra oni-lsp oni-smartparens) - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: - -;; My C# configuration. This configuration enables ‘rainbow-delimiters-mode’. - -;;; Code: - -(require 'company) -(require 'csharp-mode) -(require 'hydra) -(require 'yasnippet) - -(defconst oni-csharp-root - (file-name-directory - (or load-file-name - (buffer-file-name))) - "The directory where ‘oni-csharp’ was loaded from.") - -(defconst oni-csharp-snippets-dir - (expand-file-name "snippets" oni-csharp-root) - "The directory where ‘oni-csharp’ stores its snippets.") - -(defcustom oni-csharp-devenv-executable - "\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\Common7\\IDE\\devenv.com\"" - "The location of the devenv.com executable." - :group 'oni-csharp) - -(defvar oni-csharp--projects (make-hash-table :test 'equal)) - -(defhydra oni-csharp-hydra (:color teal :hint nil) - " -^Compile^ -^^------------ -_cp_: Project -_cs_: Solution -^^ -" - ("cp" oni-csharp-compile-project) - ("cs" oni-csharp-compile-solution)) - -(defun oni-csharp-compile-solution () - (interactive) - (let ((compile-command (concat oni-csharp-devenv-executable " /Build Debug " (oni-csharp-locate-dominating-file-wildcard "*.sln")))) - (compile compile-command))) - -(defun oni-csharp-locate-dominating-file-wildcard (filename) - (let (file-list - (default-directory default-directory)) - (while (and (null file-list) - (string-prefix-p (projectile-project-root) default-directory)) - (setq file-list (file-expand-wildcards filename t) - default-directory (file-name-directory (directory-file-name default-directory)))) - (car file-list))) - -(defun oni-csharp-compile-project () - (interactive) - (let ((compile-command (concat oni-csharp-devenv-executable " /Build Debug " (oni-csharp-locate-dominating-file-wildcard "*.sln") " /project " (oni-csharp-locate-dominating-file-wildcard "*.csproj")))) - (compile compile-command))) - -(defun oni-csharp--auto-fill-mode () - "Enable ‘auto-fill-mode’ only for comments." - (setq-local comment-auto-fill-only-comments t) - (auto-fill-mode)) - -(defun oni-csharp-snippets-initialize () - "Initialize the snippets for ‘oni-csharp’." - (when (boundp 'yas-snippet-dirs) - (add-to-list 'yas-snippet-dirs oni-csharp-snippets-dir t)) - (yas-load-directory oni-csharp-snippets-dir)) - -(defun oni-csharp--update-style () - "Set style rules according to personal (or recommended) preference." - (c-set-offset 'arglist-intro '+) - (c-set-offset 'arglist-cont-nonempty '+)) - -(add-hook 'csharp-mode-hook 'abbrev-mode) -(add-hook 'csharp-mode-hook 'company-mode) -(add-hook 'csharp-mode-hook 'display-fill-column-indicator-mode) -(add-hook 'csharp-mode-hook 'electric-indent-local-mode) -(add-hook 'csharp-mode-hook 'flycheck-mode) -(add-hook 'csharp-mode-hook 'lsp) -(add-hook 'csharp-mode-hook 'oni-csharp--auto-fill-mode) -(add-hook 'csharp-mode-hook 'oni-csharp--update-style) -(add-hook 'csharp-mode-hook 'rainbow-delimiters-mode) -(add-hook 'csharp-mode-hook 'smartparens-mode) - -(define-key csharp-mode-map (kbd "C-c SPC") 'oni-csharp-hydra/body) - -(define-abbrev csharp-mode-abbrev-table "and" "&&" nil :system t) -(define-abbrev csharp-mode-abbrev-table "or" "||" nil :system t) - -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.xaml\\'" . nxml-mode)) - -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.targets\\'" . nxml-mode)) - -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.proj\\'". nxml-mode)) - -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.csproj\\'" . nxml-mode)) - -(with-eval-after-load 'autoinsert - (add-to-list 'auto-insert-alist - `(,(rx ".proj" string-end) - nil - "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\" ToolsVersion=\"4.0\">\n " _ "\n</Project>"))) - -(with-eval-after-load 'lsp-csharp - (when (eq system-type 'windows-nt) - (setq lsp-csharp-omnisharp-roslyn-server-dir - (expand-file-name "~/scoop/apps/omnisharp/current")))) - -(with-eval-after-load 'compile - (add-to-list 'compilation-error-regexp-alist - `(,(rx (minimal-match (one-or-more digit)) ">" - (group (any alpha) - ":\\" - (minimal-match (one-or-more (any alpha "\\" ".")))) - "(" - (group (minimal-match (one-or-more digit))) - "," - (group (minimal-match (one-or-more digit))) - "," - (group (minimal-match (one-or-more digit))) - "," - (group (minimal-match (one-or-more digit))) - "): " - (group "error" (one-or-more any))) - 1 (2 . 4) (3 . 5) 2 6))) - -(with-eval-after-load 'csharp-mode - (with-eval-after-load 'yasnippet - (oni-csharp-snippets-initialize))) - -;;; Solution mode - -(defun oni-csharp-collect-project-names () - "Go through the current buffer and collect all the project names." - (interactive) - (clrhash oni-csharp--projects) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward - (rx bol - "Project(\"{" - (group (minimal-match (1+ (or alphanumeric "-")))) - "}\") = \"" - (group (minimal-match (1+ any))) - "\", \"" - (minimal-match (1+ any)) - "\", \"{" - (group (minimal-match (1+ any))) - "}\"" - eol) - nil - :noerror) - (puthash (match-string-no-properties 3) - (match-string-no-properties 2) - oni-csharp--projects)))) - -(defun oni-csharp-display-project-names () - "Display the project names in the current buffer." - (interactive) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward - (rx bol - (zero-or-more whitespace) - (group - "{" - (group (minimal-match (one-or-more (or alphanumeric "-")))) - "}") - " = " - (group - "{" - (group (minimal-match (one-or-more (or alphanumeric "-")))) - "}") - eol) - nil - :noerror) - (add-text-properties - (match-beginning 1) (match-end 1) - (list 'display (gethash (match-string 2) oni-csharp--projects) - 'face 'font-lock-variable-name-face - 'help-echo (buffer-substring-no-properties - (match-beginning 1) (match-end 1)) - 'intangile nil)) - (add-text-properties - (match-beginning 3) (match-end 3) - (list 'display (gethash (match-string 4) oni-csharp--projects) - 'face 'font-lock-variable-name-face - 'help-echo (buffer-substring-no-properties - (match-beginning 3) (match-end 3))))))) - -(define-derived-mode csharp-solution-mode prog-mode "Sln" - "A major mode for viewing and editing C# ‘.sln’ files." - (oni-csharp-collect-project-names) - (oni-csharp-display-project-names)) - -;;;###autoload -(add-to-list 'auto-mode-alist `(,(rx ".sln" eos) . csharp-solution-mode)) - -(defun oni-csharp-add-file-to-project () - (interactive) - (let* ((file-name (buffer-file-name)) - (project-dir (locate-dominating-file file-name - (lambda (file) - (if (file-directory-p file) - (directory-files file nil (rx ".csproj" eos)) - (string-suffix-p ".csproj" file))))) - (project-files (directory-files project-dir nil (rx ".csproj" eos))) - (project-file (cl-case (length project-files) - (0 (error "No project files found in %s" project-dir)) - (1 (car project-files)) - (t (completing-read "Which project file? " project-files)))) - (relative-file-name (file-relative-name file-name project-dir)) - (project-file-absolute-path (expand-file-name project-file project-dir))) - (with-current-buffer (find-file-noselect project-file-absolute-path) - (save-excursion - (re-search-forward (rx "<Compile")) - (end-of-line) - (when (and buffer-file-read-only - (vc-registered project-file-absolute-path)) - (vc-checkout project-file-absolute-path)) - (insert "\n" "<Compile Include=\"" (string-replace "/" "\\" relative-file-name) "\" />") - (re-search-backward (rx "<ItemGroup>")) - (forward-line) - (let ((start (line-beginning-position))) - (re-search-forward (rx "</ItemGroup>")) - (forward-line -1) - (indent-region start (line-end-position)) - (sort-lines nil start (line-end-position))) - (save-buffer))))) - -(provide 'oni-csharp) -;;; oni-csharp.el ends here diff --git a/oni-csharp/snippets/csharp-mode/testm b/oni-csharp/snippets/csharp-mode/testm deleted file mode 100644 index 4bd243d..0000000 --- a/oni-csharp/snippets/csharp-mode/testm +++ /dev/null @@ -1,9 +0,0 @@ -# -*- mode: snippet -*- -# name: Test Method -# key: testm -# -- -[TestMethod] -public void ${1:TestMethod}() -{ - $0 -}
\ No newline at end of file diff --git a/oni-csharp/snippets/nxml-mode/Import b/oni-csharp/snippets/nxml-mode/Import deleted file mode 100644 index bddbf3f..0000000 --- a/oni-csharp/snippets/nxml-mode/Import +++ /dev/null @@ -1,6 +0,0 @@ -# -*- mode: snippet -*- -# name: Import -# key: imp -# condition: (string-suffix-p ".proj" (buffer-file-name)) -# -- -<Import Project="$1"/> |
