Disable LSP/Eglot/ESlint for QML files

This commit is contained in:
Jens Luedicke
2025-09-08 16:58:12 +02:00
parent 7899e5e72d
commit 7279a53bc0
8 changed files with 144 additions and 87 deletions

View File

@@ -125,14 +125,17 @@
"Configure debugging with dap-mode." "Configure debugging with dap-mode."
(use-package dap-mode (use-package dap-mode
:ensure t :ensure t
:commands dap-debug :commands (dap-debug dap-debug-edit-template)
;; Don't auto-enable - only load when explicitly needed for debugging
:config :config
;; Python debugging ;; Python debugging
(require 'dap-python) (require 'dap-python)
;; C/C++ debugging ;; C/C++ debugging
(require 'dap-gdb-lldb) (require 'dap-gdb-lldb)
;; Automatic configuration ;; Don't auto-configure globally - causes severe performance issues
(dap-auto-configure-mode 1))) ;; Enable manually when debugging: M-x dap-auto-configure-mode
;; (dap-auto-configure-mode 1) ; Commented out for performance
))
(defun dev-mode-modern-setup-languages () (defun dev-mode-modern-setup-languages ()
"Configure language-specific settings." "Configure language-specific settings."
@@ -148,7 +151,8 @@
(use-package qml-mode (use-package qml-mode
:ensure t :ensure t
:mode "\\.qml\\'" :mode "\\.qml\\'"
:hook (qml-mode . eglot-ensure))) ;; Removed qml-mode hook - Qt5 has no language server
))
(defun dev-mode-modern-setup-editing-tools () (defun dev-mode-modern-setup-editing-tools ()
"Setup advanced editing tools for development." "Setup advanced editing tools for development."

View File

@@ -46,7 +46,7 @@
"Configure LSP mode for development." "Configure LSP mode for development."
(use-package lsp-mode (use-package lsp-mode
:ensure t :ensure t
:hook ((c-mode c++-mode python-mode qml-mode) . lsp-deferred) :hook ((c-mode c++-mode python-mode) . lsp-deferred) ; Removed qml-mode - Qt5 has no LSP
:commands (lsp lsp-deferred) :commands (lsp lsp-deferred)
:config :config
(setq lsp-keymap-prefix "C-c l") (setq lsp-keymap-prefix "C-c l")
@@ -420,11 +420,13 @@
"Configure debugging support." "Configure debugging support."
(use-package dap-mode (use-package dap-mode
:ensure t :ensure t
:commands dap-debug :commands (dap-debug dap-debug-edit-template)
;; Don't auto-enable - only load when explicitly needed
:config :config
(require 'dap-python) (require 'dap-python)
(require 'dap-gdb-lldb) (require 'dap-gdb-lldb)
(dap-auto-configure-mode 1) ;; Don't auto-configure globally - causes performance issues
;; (dap-auto-configure-mode 1) ; Commented out for performance
(setq dap-auto-configure-features '(sessions locals controls tooltip)))) (setq dap-auto-configure-features '(sessions locals controls tooltip))))
(defun dev-mode-custom-functions () (defun dev-mode-custom-functions ()

View File

@@ -11,6 +11,10 @@
;; EMERGENCY FIX - Load this first to ensure editing works ;; EMERGENCY FIX - Load this first to ensure editing works
(require 'init-emergency-fix) (require 'init-emergency-fix)
(require 'init-seq-fix) ; Fix seq library issues
;; Load performance optimizations early
(require 'init-performance)
;;; Load core modules in order ;;; Load core modules in order
(require 'init-core) ; Core settings and package management (require 'init-core) ; Core settings and package management

View File

@@ -12,6 +12,18 @@
(setq shift-select-mode t) (setq shift-select-mode t)
(transient-mark-mode t) (transient-mark-mode t)
;; Standard word navigation with C-left/right
(global-set-key (kbd "C-<left>") 'left-word)
(global-set-key (kbd "C-<right>") 'right-word)
;; Word selection with C-Shift-left/right
(global-set-key (kbd "C-S-<left>") 'left-word)
(global-set-key (kbd "C-S-<right>") 'right-word)
;; Make sure shift-selection works with these commands
(put 'left-word 'CUA 'move)
(put 'right-word 'CUA 'move)
;;; Text manipulation ;;; Text manipulation
(global-set-key (kbd "C-<return>") 'cua-set-rectangle-mark) (global-set-key (kbd "C-<return>") 'cua-set-rectangle-mark)
@@ -41,6 +53,11 @@
:config :config
(setq olivetti-body-width 100)) (setq olivetti-body-width 100))
;;; Rainbow delimiters - colorize matching brackets
(use-package rainbow-delimiters
:ensure t
:hook (prog-mode . rainbow-delimiters-mode))
;;; God-mode configuration (disabled by default) ;;; God-mode configuration (disabled by default)
;; Uncomment the following lines to enable god-mode ;; Uncomment the following lines to enable god-mode
;; (let ((god-config (expand-file-name "god-mode-config.el" user-emacs-directory))) ;; (let ((god-config (expand-file-name "god-mode-config.el" user-emacs-directory)))

View File

@@ -55,10 +55,11 @@
(define-key smartparens-mode-map (kbd "C-M-w") 'sp-copy-sexp) (define-key smartparens-mode-map (kbd "C-M-w") 'sp-copy-sexp)
(define-key smartparens-mode-map (kbd "M-<delete>") 'sp-unwrap-sexp) (define-key smartparens-mode-map (kbd "M-<delete>") 'sp-unwrap-sexp)
(define-key smartparens-mode-map (kbd "M-<backspace>") 'sp-backward-unwrap-sexp) (define-key smartparens-mode-map (kbd "M-<backspace>") 'sp-backward-unwrap-sexp)
(define-key smartparens-mode-map (kbd "C-<right>") 'sp-forward-slurp-sexp) ;; Changed from C-<left/right> to avoid conflict with word navigation
(define-key smartparens-mode-map (kbd "C-<left>") 'sp-forward-barf-sexp) (define-key smartparens-mode-map (kbd "C-c <right>") 'sp-forward-slurp-sexp)
(define-key smartparens-mode-map (kbd "C-M-<right>") 'sp-backward-barf-sexp) (define-key smartparens-mode-map (kbd "C-c <left>") 'sp-forward-barf-sexp)
(define-key smartparens-mode-map (kbd "C-M-<left>") 'sp-backward-slurp-sexp) (define-key smartparens-mode-map (kbd "C-c M-<right>") 'sp-backward-barf-sexp)
(define-key smartparens-mode-map (kbd "C-c M-<left>") 'sp-backward-slurp-sexp)
(define-key smartparens-mode-map (kbd "M-D") 'sp-splice-sexp) (define-key smartparens-mode-map (kbd "M-D") 'sp-splice-sexp)
(define-key smartparens-mode-map (kbd "C-]") 'sp-select-next-thing-exchange) (define-key smartparens-mode-map (kbd "C-]") 'sp-select-next-thing-exchange)
(define-key smartparens-mode-map (kbd "C-<") 'sp-select-previous-thing) (define-key smartparens-mode-map (kbd "C-<") 'sp-select-previous-thing)
@@ -156,7 +157,8 @@
(global-set-key (kbd "C-x |") 'qol-toggle-window-split) (global-set-key (kbd "C-x |") 'qol-toggle-window-split)
;;; Window movement with windmove ;;; Window movement with windmove
(windmove-default-keybindings) ; Use Shift+arrows to move between windows ;; Use Meta (Alt) + arrows instead of Shift+arrows to avoid conflicts with shift-selection
(windmove-default-keybindings 'meta) ; Use Meta+arrows to move between windows
(setq windmove-wrap-around t) (setq windmove-wrap-around t)
;;; Better buffer names for duplicates ;;; Better buffer names for duplicates

View File

@@ -83,7 +83,7 @@
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode)) (add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode))
;; Enhanced font-lock for tree-sitter modes ;; Enhanced font-lock for tree-sitter modes
(setq treesit-font-lock-level 4) ; Maximum highlighting (setq treesit-font-lock-level 3) ; Balanced highlighting (was 4, reduced for performance)
;; Tree-sitter debugging helpers ;; Tree-sitter debugging helpers
(defun treesit-inspect-node-at-point () (defun treesit-inspect-node-at-point ()

View File

@@ -37,6 +37,18 @@
(setq window-divider-default-right-width 1) (setq window-divider-default-right-width 1)
(window-divider-mode 1) (window-divider-mode 1)
;;; X11 optimizations for no-toolkit builds
(when (and (display-graphic-p)
(eq window-system 'x)
;; Check if using no-toolkit build (OLDXMENU present)
(string-match-p "OLDXMENU" system-configuration-features))
;; Disable double buffering to fix redraw issues
(add-to-list 'default-frame-alist '(inhibit-double-buffering . t))
;; Force synchronous X operations
(setq x-gtk-use-system-tooltips nil)
;; More responsive display updates
(setq redisplay-dont-pause t))
;;; Font Settings (preserved from custom-set-faces) ;;; Font Settings (preserved from custom-set-faces)
;; Apply font settings to all frames (current and future) ;; Apply font settings to all frames (current and future)
(set-face-attribute 'default nil (set-face-attribute 'default nil

View File

@@ -1,21 +1,8 @@
;;; -*- lexical-binding: t -*- ;;; -*- lexical-binding: t -*-
;; QML Language Server Configuration Helper ;; QML Mode Configuration (Qt5 - No LSP)
;; This file provides enhanced QML auto-completion setup ;; This file provides QML mode setup without LSP (Qt5 has no language server)
;; Function to find QML language server executable ;; Basic QML mode configuration
(defun find-qml-language-server ()
"Find the QML language server executable in common locations."
(or (executable-find "qml-lsp")
(executable-find "qmlls")
(executable-find "qml6-lsp")
;; Try common Qt installation paths
"/usr/lib/qt6/bin/qmlls"
"/usr/lib/x86_64-linux-gnu/qt6/bin/qmlls"
"/opt/qt6/bin/qmlls"
;; Fallback - will show an error if not found
"qmlls"))
;; Enhanced QML mode configuration
(use-package qml-mode (use-package qml-mode
:ensure t :ensure t
:mode ("\\.qml\\'" . qml-mode) :mode ("\\.qml\\'" . qml-mode)
@@ -25,58 +12,20 @@
;; Add QML-specific keywords for better syntax highlighting ;; Add QML-specific keywords for better syntax highlighting
(font-lock-add-keywords 'qml-mode (font-lock-add-keywords 'qml-mode
'(("\\<\\(readonly\\|default\\|signal\\|alias\\)\\>" . font-lock-keyword-face) '(("\\<\\(readonly\\|default\\|signal\\|alias\\|property\\|required\\)\\>" . font-lock-keyword-face)
("\\<\\(Qt\\|QtQuick\\|QtQuick\\.Controls\\)\\>" . font-lock-constant-face)))) ("\\<\\(Qt\\|QtQuick\\|QtQuick\\.Controls\\|QtQuick\\.Layouts\\)\\>" . font-lock-constant-face)
("\\<\\(Item\\|Rectangle\\|Text\\|Image\\|MouseArea\\|Column\\|Row\\|Grid\\|ListView\\|GridView\\)\\>" . font-lock-type-face))))
;; Enhanced LSP configuration for QML ;; Company backends for QML (without LSP)
(with-eval-after-load 'lsp-mode
;; Register QML language server
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection
(lambda () (list (find-qml-language-server))))
:activation-fn (lsp-activate-on "qml")
:server-id 'qmlls))
;; QML-specific LSP settings
(setq lsp-qml-server-command (find-qml-language-server))
;; Enable LSP for QML files
(add-to-list 'lsp-language-id-configuration '(qml-mode . "qml")))
;; Enhanced company configuration for QML with error handling
(with-eval-after-load 'company (with-eval-after-load 'company
;; Check if company-qml is working properly
(defun company-qml-safe-p ()
"Check if company-qml backend is available and working."
(and (featurep 'company-qml)
(condition-case nil
(progn
(company-qml 'candidates "test")
t)
(error nil))))
;; QML-specific company backends with fallback
(defun setup-qml-company-backends () (defun setup-qml-company-backends ()
"Set up company backends for QML mode with error handling." "Set up company backends for QML mode without LSP."
(if (company-qml-safe-p) (setq-local company-backends
;; Use company-qml if it works '((company-dabbrev-code ; Code word completions
(setq-local company-backends company-keywords ; Language keywords
'((company-qml company-files ; File completions
company-capf company-yasnippet) ; Snippet completions
company-files company-dabbrev))) ; General word completions
company-yasnippet
company-dabbrev-code)
company-dabbrev))
;; Fallback without company-qml
(progn
(message "company-qml not available or has errors, using LSP-based completion")
(setq-local company-backends
'((company-capf ; LSP completions (primary for QML)
company-files ; File completions
company-yasnippet ; Snippet completions
company-dabbrev-code ; Code word completions
company-keywords) ; Language keywords
company-dabbrev))))) ; General word completions
;; Apply to QML mode ;; Apply to QML mode
(add-hook 'qml-mode-hook 'setup-qml-company-backends)) (add-hook 'qml-mode-hook 'setup-qml-company-backends))
@@ -88,10 +37,35 @@
(unless (file-exists-p qml-snippets-dir) (unless (file-exists-p qml-snippets-dir)
(make-directory qml-snippets-dir t)))) (make-directory qml-snippets-dir t))))
;; Enhanced QML development settings ;; Prevent LSP from being registered for QML
(with-eval-after-load 'lsp-mode
;; Remove QML from LSP language configurations
(setq lsp-language-id-configuration
(assq-delete-all 'qml-mode lsp-language-id-configuration))
;; Unregister any QML LSP clients
(when (boundp 'lsp-clients)
(setq lsp-clients (delq 'qmlls lsp-clients))))
;; Prevent Eglot from activating in QML mode
(with-eval-after-load 'eglot
;; Remove QML from eglot server programs if present
(setq eglot-server-programs
(assq-delete-all 'qml-mode eglot-server-programs)))
;; QML development settings
(add-hook 'qml-mode-hook (add-hook 'qml-mode-hook
(lambda () (lambda ()
;; Enable electric pair mode for automatic bracket/quote pairing ;; Forcefully disable LSP for QML files (Qt5 has no language server)
(when (bound-and-true-p lsp-mode)
(lsp-disconnect)
(lsp-mode -1))
(when (bound-and-true-p lsp-managed-mode)
(lsp-managed-mode -1))
;; Also disable Eglot if it tries to start
(when (bound-and-true-p eglot--managed-mode)
(eglot-shutdown)
(eglot--managed-mode -1))
;; Electric pair mode for automatic bracket/quote pairing
(electric-pair-local-mode 1) (electric-pair-local-mode 1)
;; Enable automatic indentation ;; Enable automatic indentation
(electric-indent-local-mode 1) (electric-indent-local-mode 1)
@@ -101,13 +75,55 @@
(setq indent-tabs-mode nil) (setq indent-tabs-mode nil)
;; Enable line numbers ;; Enable line numbers
(display-line-numbers-mode 1) (display-line-numbers-mode 1)
;; Enable syntax checking ;; Disable flycheck (no QML checker for Qt5)
(flycheck-mode 1))) (when (bound-and-true-p flycheck-mode)
(flycheck-mode -1))))
;; Key bindings for QML development ;; Simple navigation functions for QML
(defun qml-find-definition ()
"Simple definition finder using grep."
(interactive)
(let ((thing (thing-at-point 'symbol)))
(when thing
(grep (format "grep -n \"\\b%s\\b\" *.qml" thing)))))
(defun qml-find-references ()
"Simple reference finder using grep."
(interactive)
(let ((thing (thing-at-point 'symbol)))
(when thing
(grep (format "grep -n \"\\b%s\\b\" *.qml" thing)))))
;; Key bindings for QML development (without LSP)
(with-eval-after-load 'qml-mode (with-eval-after-load 'qml-mode
(define-key qml-mode-map (kbd "C-c C-r") 'lsp-rename) (define-key qml-mode-map (kbd "C-c C-d") 'qml-find-definition)
(define-key qml-mode-map (kbd "C-c C-d") 'lsp-find-definition) (define-key qml-mode-map (kbd "C-c C-f") 'qml-find-references)
(define-key qml-mode-map (kbd "C-c C-f") 'lsp-find-references)) (define-key qml-mode-map (kbd "C-c C-c") 'comment-region)
(define-key qml-mode-map (kbd "C-c C-u") 'uncomment-region))
(provide 'qml-config) ;; Helper function to insert common QML snippets
(defun qml-insert-property ()
"Insert a QML property declaration."
(interactive)
(insert "property ")
(save-excursion (insert ": ")))
(defun qml-insert-signal ()
"Insert a QML signal declaration."
(interactive)
(insert "signal ")
(save-excursion (insert "()")))
(defun qml-insert-function ()
"Insert a QML function declaration."
(interactive)
(insert "function ")
(save-excursion (insert "() {\n \n}")))
;; Add snippet key bindings
(with-eval-after-load 'qml-mode
(define-key qml-mode-map (kbd "C-c i p") 'qml-insert-property)
(define-key qml-mode-map (kbd "C-c i s") 'qml-insert-signal)
(define-key qml-mode-map (kbd "C-c i f") 'qml-insert-function))
(provide 'qml-config)