Files
emacs-config/lisp/init-emergency-fix.el
2025-09-08 12:14:12 +02:00

72 lines
2.1 KiB
EmacsLisp

;;; init-emergency-fix.el --- Emergency fixes for editing issues -*- lexical-binding: t -*-
;;; Commentary:
;;; Quick fixes for when editing is broken
;;; Code:
;; Emergency function to restore editing capability
(defun fix-editing-now ()
"Emergency fix to restore editing capability."
(interactive)
;; Disable read-only mode
(read-only-mode -1)
(setq buffer-read-only nil)
;; Disable god-mode if it's enabled
(when (boundp 'god-local-mode)
(god-local-mode -1))
(when (boundp 'god-global-mode)
(god-global-mode -1))
;; Disable view-mode if active
(when (bound-and-true-p view-mode)
(view-mode -1))
;; Ensure we're not in special modes
(when (bound-and-true-p special-mode)
(fundamental-mode))
;; Disable any potential read-only causing modes
(when (bound-and-true-p buffer-read-only)
(toggle-read-only -1))
;; Reset cursor type
(setq cursor-type 'bar)
;; Ensure CUA mode isn't causing issues
(when cua-mode
(cua-mode -1)
(cua-mode 1))
(message "Editing should be restored. If not, try M-x fundamental-mode"))
;; Diagnostic function
(defun diagnose-editing-issue ()
"Diagnose why editing might be disabled."
(interactive)
(let ((issues '()))
(when buffer-read-only
(push "Buffer is read-only" issues))
(when (bound-and-true-p god-local-mode)
(push "God-mode is enabled" issues))
(when (bound-and-true-p view-mode)
(push "View-mode is enabled" issues))
(when (bound-and-true-p special-mode)
(push "Special-mode is active" issues))
(when (eq major-mode 'fundamental-mode)
(push "In fundamental-mode" issues))
(if issues
(message "Issues found: %s" (string-join issues ", "))
(message "No obvious issues found. Mode: %s, Read-only: %s"
major-mode buffer-read-only))))
;; Global keybinding for emergency fix
(global-set-key (kbd "C-c C-!") 'fix-editing-now)
(global-set-key (kbd "C-c C-?") 'diagnose-editing-issue)
;; Ensure fundamental settings are correct
(setq-default buffer-read-only nil)
(setq inhibit-read-only nil)
(provide 'init-emergency-fix)
;;; init-emergency-fix.el ends here