diff --git a/flake.nix b/flake.nix index c0948cf..b6b4ea4 100644 --- a/flake.nix +++ b/flake.nix @@ -32,6 +32,7 @@ # Gtk causes a flickering issue on WM mode withGTK3 = false; toolkit = "lucid"; + withTreeSitter = true; }; elispDepsFile = ./lisp/fg42/deps.el; diff --git a/lisp/fg42/cubes/all.el b/lisp/fg42/cubes/all.el index db237fb..f607b79 100644 --- a/lisp/fg42/cubes/all.el +++ b/lisp/fg42/cubes/all.el @@ -41,5 +41,6 @@ (require 'fg42/cubes/bookmark) (require 'fg42/cubes/terraform) + (provide 'fg42/cubes/all) ;;; all.el ends here diff --git a/lisp/fg42/cubes/fg42.el b/lisp/fg42/cubes/fg42.el index c8062d8..265e2bb 100644 --- a/lisp/fg42/cubes/fg42.el +++ b/lisp/fg42/cubes/fg42.el @@ -56,6 +56,8 @@ (require 'fg42/cubes/nix) (require 'fg42/cubes/julia) (require 'fg42/cubes/themes) +(require 'fg42/cubes/verilog) + (when-wm (require 'fg42/cubes/wm)) diff --git a/lisp/fg42/cubes/python.el b/lisp/fg42/cubes/python.el index e291ccb..e2ccff6 100644 --- a/lisp/fg42/cubes/python.el +++ b/lisp/fg42/cubes/python.el @@ -93,6 +93,7 @@ interactive `pyvenv-workon' function before `lsp'" :after (python lsp-mode) :hook (python-mode . (lambda () + (setq lsp-lens-enable nil) ;; Pyls and pylsp can be annoying (add-to-list 'lsp-disabled-clients 'pyls) (add-to-list 'lsp-disabled-clients 'pylsp) diff --git a/lisp/fg42/cubes/verilog.el b/lisp/fg42/cubes/verilog.el new file mode 100644 index 0000000..142fd2f --- /dev/null +++ b/lisp/fg42/cubes/verilog.el @@ -0,0 +1,67 @@ +;;; PythonCubes --- The Python cubes for FG42 -*- lexical-binding: t; -*- +;; +;; Copyright (c) 2010-2024 Sameer Rahmani & Contributors +;; +;; Author: Sameer Rahmani +;; URL: https://devheroes.codes/FG42/FG42 +;; Version: 3.0.0 +;; +;; 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 . +;; +;;; Commentary: +;;; Code: +(require 'fpkg) +(require 'fg42/cube) +(require 'fg42/utils) + + +(->cube verilog-mode + "Add support for verilog and system verilog to FG42. More info at +https://www.veripool.org/verilog-mode/") + +(->cube verilog-ext + "This package provides useful extensions on top of `verilog-mode' and `verilog-ts-mode'." + :hook ((verilog-mode . verilog-ext-mode)) + :init + (setq verilog-ext-eglot-default-server 've-svls) + (setq verilog-ext-feature-list + '(font-lock + xref + capf + hierarchy + eglot + lsp + flycheck + beautify + navigation + template + formatter + compilation + imenu + which-func + hideshow + typedefs + time-stamp + block-end-comments + ports)) + :config + (require 'pkg-info) + (setq verilog-ext-eglot-default-server 've-svls) + (setq verilog-ext-lsp-mode-default-server 've-svls) + (verilog-ext-eglot-set-server 've-svls) + (verilog-ext-lsp-set-server 've-svls) + (verilog-ext-mode-setup)) + +(provide 'fg42/cubes/verilog ) +;;; verilog.el ends here diff --git a/lisp/fg42/deps.el b/lisp/fg42/deps.el index 99fb8d5..b6e006c 100644 --- a/lisp/fg42/deps.el +++ b/lisp/fg42/deps.el @@ -117,7 +117,9 @@ smart-mode-line all-the-icons exwm - ) + verilog-ext + verilog-mode + pkg-info) (provide 'fg42/deps) ;;; deps.el ends here diff --git a/nix/fg42.nix b/nix/fg42.nix index 8051cf4..d32be07 100644 --- a/nix/fg42.nix +++ b/nix/fg42.nix @@ -42,6 +42,10 @@ bash, supportPython ? true, + + verilogSupport ? true, + svls, + verilator, }: with builtins; let @@ -51,7 +55,9 @@ let else getAttr pkg ourPackages; emacsBundle = (emacsPackagesFor emacs).withPackages (epkgs: - (map (x: getPkg epkgs x) elispPkgs) + (map (x: getPkg epkgs x) elispPkgs) ++ [ + epkgs.treesit-grammars.with-all-grammars + ] ); maintainers = import ./maintainers.nix; @@ -69,6 +75,9 @@ let python3Packages.black python3Packages.pylint python3Packages.flake8 + ]) ++ (lib.optional verilogSupport [ + svls + verilator ]); paths = map (x: "${x}/bin/") (lib.lists.flatten runtimeBins); @@ -167,16 +176,10 @@ in stdenv.mkDerivation (final: rec{ buildInputs = [ emacs - texinfo emacsBundle - ripgrep git texinfo - vazir-fonts - fira-code - nerdfonts gcc - ltex-ls bash ];