diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-20 16:17:30 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-20 16:17:30 -0500 |
| commit | df4469f231e86877b7d055bf989220a5fbc0a763 (patch) | |
| tree | ea3ef00d10a7a7c1366213d493ea4e2546b9d783 /modules/prog-general.el | |
| parent | ce8477e80e0a837ac462b97c1a4b5d834838d6d3 (diff) | |
feat:programming: Enhance language-specific keybindings and setup
Add language-specific keybindings and configurations for C, Go,
Python, and shell scripting panels. Introduce system utility
function declarations and improve keybinding consistency across
languages. Implement keybindings for debug, format, and static
analysis tools tailored to each programming language, enhancing the
developer experience and workflow efficiency.
Diffstat (limited to 'modules/prog-general.el')
| -rw-r--r-- | modules/prog-general.el | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/modules/prog-general.el b/modules/prog-general.el index 00b6fbd3..f6ebfe09 100644 --- a/modules/prog-general.el +++ b/modules/prog-general.el @@ -5,6 +5,31 @@ ;; This module provides general programming functionality not related to a ;; specific programming language, such as code-folding, project management, ;; highlighting symbols, snippets, and whitespace management. +;; +;; Keybinding Scheme: +;; ------------------ +;; Unified keybindings across all programming languages using Projectile +;; for project-aware operations with language-specific overrides. +;; +;; Global Keybindings (all prog-mode buffers): +;; F4 - projectile-compile-project (smart compilation) +;; S-F4 - recompile (repeat last compile) +;; F5 - projectile-test-project (run tests) +;; S-F5 - Language-specific static analysis +;; F6 - projectile-run-project (run/execute) +;; S-F6 - Language-specific debugger +;; C-; f - Language-specific formatter +;; +;; Quick Reference Table: +;; | Key | Global | C | Go | Python | Shell | +;; |-------|----------|---------------|-------------|-------------|-------------| +;; | F4 | compile | compile | compile | compile | compile | +;; | S-F4 | recompile| recompile | (projectile)| (projectile)| (projectile)| +;; | F5 | test | test | test | test | test | +;; | S-F5 | (none) | disabled | staticcheck | mypy | shellcheck | +;; | F6 | run | run | run | run | run | +;; | S-F6 | (none) | gdb | dlv | pdb | disabled | +;; | C-; f | format | clang-format | gofmt | blacken | shfmt | ;;; Code: @@ -29,8 +54,12 @@ (declare-function dired-get-filename "dired") (declare-function global-treesit-auto-mode "treesit-auto") (declare-function treesit-auto-add-to-auto-mode-alist "treesit-auto") +(declare-function treesit-auto-recipe-lang "treesit-auto") (declare-function highlight-indent-guides-mode "highlight-indent-guides") +;; Forward declarations for treesit-auto variables +(defvar treesit-auto-recipe-list) + ;; Forward declarations for functions defined later in this file (declare-function cj/find-project-root-file "prog-general") (declare-function cj/project-switch-actions "prog-general") @@ -48,7 +77,13 @@ (setq-default display-line-numbers-width 3) ;; 3 characters reserved for line numbers (turn-on-visual-line-mode) ;; word-wrapping (auto-fill-mode) ;; auto wrap at the fill column set - (local-set-key (kbd "M-;") 'comment-dwim)) ;; comment/uncomment region as appropriate + (local-set-key (kbd "M-;") 'comment-dwim) ;; comment/uncomment region as appropriate + + ;; Project-wide commands (can be overridden by language-specific modes) + (local-set-key (kbd "<f4>") 'projectile-compile-project) ;; compile project + (local-set-key (kbd "S-<f4>") 'recompile) ;; recompile (repeat last) + (local-set-key (kbd "<f5>") 'projectile-test-project) ;; run tests + (local-set-key (kbd "<f6>") 'projectile-run-project)) ;; run project (add-hook 'prog-mode-hook #'cj/general-prog-settings) (add-hook 'html-mode-hook #'cj/general-prog-settings) |
