Fix vterm hang, rename gemacs→jemacs, fix margin backgrounds

ober

18199ff31579d74f071260c63de50477aac4d85f

diff --git a/lib/jerboa-emacs/qt/app.sls b/lib/jerboa-emacs/qt/app.sls
index fdcff11..5c657b0 100644
--- a/lib/jerboa-emacs/qt/app.sls
+++ b/lib/jerboa-emacs/qt/app.sls
@@ -119,7 +119,7 @@
                        (if modified? "* " "")
                        name
                        (if path (string-append " - " path) "")
-                       " - gemacs")])
+                       " - jemacs")])
          (qt-main-window-set-title! win title)))
   (def (qt-update-mark-selection! app)
        "Update visual selection to reflect active mark region.\n   When buffer-mark is set, highlights the region between mark and cursor.\n   When mark is cleared, ensures no stale selection remains."
@@ -398,7 +398,7 @@
                       (loop (cdr wins))))))])))
   (def (qt-do-init! qt-app args) (init-jemacs-log!)
        (init-verbose-log!)
-       (verbose-log! "gemacs-qt verbose mode ON")
+       (verbose-log! "jemacs-qt verbose mode ON")
        (define-standard-faces!)
        (let-values ([(saved-theme saved-font-family saved-font-size)
                      (theme-settings-load!)])
@@ -512,7 +512,7 @@
          (let* ([ed (qt-current-editor fr)]
                 [saved (scratch-restore!)]
                 [text (or saved
-                          (string-append ";; Gerbil Emacs — *scratch*\n" ";;\n"
+                          (string-append ";; Jemacs — *scratch*\n" ";;\n"
                             ";; Key Bindings:\n"
                             ";;   C-x C-f   Find file        C-x C-s   Save buffer\n"
                             ";;   C-x b     Switch buffer     C-x k     Kill buffer\n"
@@ -1566,7 +1566,7 @@
                          clean-args)])
            (for-each (lambda (file) (qt-open-file! app file)) files))
          (qt-main-window-set-central-widget! win central)
-         (qt-main-window-set-title! win "gemacs")
+         (qt-main-window-set-title! win "jemacs")
          (qt-widget-resize! win 800 600)
          (qt-widget-show! win)
          (qt-modeline-update! app)
diff --git a/lib/jerboa-emacs/qt/commands-aliases2.sls b/lib/jerboa-emacs/qt/commands-aliases2.sls
index 4b121c8..abb1c91 100644
--- a/lib/jerboa-emacs/qt/commands-aliases2.sls
+++ b/lib/jerboa-emacs/qt/commands-aliases2.sls
@@ -366,7 +366,7 @@
   (define *qt-eww-bookmarks-file*--cell
     (vector
       (path-expand
-        ".gemacs-eww-bookmarks"
+        ".jemacs-eww-bookmarks"
         (user-info-home (user-info (user-name))))))
   (def (qt-eww-load-bookmarks!)
        "Load EWW bookmarks from disk."
@@ -668,7 +668,7 @@
              (reverse lines)
              (list
                ""
-               "Use (qt-autoload! 'symbol \"path.ss\") in ~/.gemacs-init.")))
+               "Use (qt-autoload! 'symbol \"path.ss\") in ~/.jemacs-init.")))
          (let* ([text (string-join lines "\n")]
                 [buf (or (buffer-by-name "*Autoloads*")
                          (qt-buffer-create! "*Autoloads*" ed #f))])
@@ -967,7 +967,7 @@
     (vector
       (string-append
         (or (getenv "HOME" #f) ".")
-        "/.gemacs-undo/")))
+        "/.jemacs-undo/")))
   (def (qt-persistent-undo-file-for path)
        (string-append
          *qt-persistent-undo-dir*
diff --git a/lib/jerboa-emacs/qt/commands-config.sls b/lib/jerboa-emacs/qt/commands-config.sls
index 8f9148b..7977dd6 100644
--- a/lib/jerboa-emacs/qt/commands-config.sls
+++ b/lib/jerboa-emacs/qt/commands-config.sls
@@ -71,7 +71,7 @@
        "Toggle font lock mode."
        (cmd-toggle-highlighting app))
   (def (cmd-customize-face app)
-       "Interactively customize a face's visual attributes.\n   Prompts for face name, then for each attribute (foreground, background, bold, italic).\n   Changes are saved to ~/.gemacs-custom-faces and persist across sessions."
+       "Interactively customize a face's visual attributes.\n   Prompts for face name, then for each attribute (foreground, background, bold, italic).\n   Changes are saved to ~/.jemacs-custom-faces and persist across sessions."
        (let* ([face-names (sort
                             (hash-keys *faces*)
                             (lambda (a b)
@@ -342,10 +342,10 @@
   (define *user-themes-dir*--cell
     (vector
       (path-expand
-        ".gemacs-themes"
+        ".jemacs-themes"
         (user-info-home (user-info (user-name))))))
   (def (discover-user-themes)
-       "Scan ~/.gemacs-themes/*.ss for user-defined theme files.\n   Returns a list of theme names (symbols)."
+       "Scan ~/.jemacs-themes/*.ss for user-defined theme files.\n   Returns a list of theme names (symbols)."
        (with-catch
          (lambda (e) (list))
          (lambda ()
@@ -362,7 +362,7 @@
                       theme-files))
                (list)))))
   (def (load-user-theme-file! theme-name)
-       "Load a user theme file from ~/.gemacs-themes/THEME-NAME.ss\n   Returns #t on success, #f on failure."
+       "Load a user theme file from ~/.jemacs-themes/THEME-NAME.ss\n   Returns #t on success, #f on failure."
        (with-catch
          (lambda (e) #f)
          (lambda ()
@@ -380,7 +380,7 @@
                          (unless (eof-object? form) (eval form) (loop))))
                      #t))))))))
   (def (cmd-load-theme app)
-       "Switch to a different color theme (built-in or user-defined from ~/.gemacs-themes/)."
+       "Switch to a different color theme (built-in or user-defined from ~/.jemacs-themes/)."
        (let* ([builtin-themes (theme-names)]
               [user-themes (discover-user-themes)]
               [all-themes (append builtin-themes user-themes)]
@@ -415,7 +415,7 @@
                             (string-append
                               "Theme: "
                               input
-                              " (from ~/.gemacs-themes/)")))
+                              " (from ~/.jemacs-themes/)")))
                         (echo-error!
                           (app-state-echo app)
                           (string-append
@@ -879,7 +879,7 @@
            (lambda (e)
              (let ([msg (with-output-to-string
                           (lambda () (display-exception e)))])
-               (gemacs-log! "cmd-term: gsh init failed: " msg)
+               (jemacs-log! "cmd-term: gsh init failed: " msg)
                (verbose-log! "cmd-term: gsh init FAILED: " msg)
                (echo-error!
                  (app-state-echo app)
diff --git a/lib/jerboa-emacs/qt/commands-core.sls b/lib/jerboa-emacs/qt/commands-core.sls
index 11a546b..394fba8 100644
--- a/lib/jerboa-emacs/qt/commands-core.sls
+++ b/lib/jerboa-emacs/qt/commands-core.sls
@@ -327,13 +327,13 @@
               (and recorded current (> current recorded)))))
   (define *dir-locals-cache*--cell (vector (make-hash-table)))
   (def (find-dir-locals-file dir)
-       "Search DIR and parent directories for .gemacs-config file."
+       "Search DIR and parent directories for .jemacs-config file."
        (let loop ([d dir] [depth 0])
          (cond
            [(> depth 50) #f]
            [(or (not d) (string=? d "") (string=? d "/")) #f]
            [else
-            (let ([config-path (path-expand ".gemacs-config" d)])
+            (let ([config-path (path-expand ".jemacs-config" d)])
               (if (file-exists? config-path)
                   config-path
                   (let* ([stripped (if (and (> (string-length d) 1)
diff --git a/lib/jerboa-emacs/qt/commands-edit.sls b/lib/jerboa-emacs/qt/commands-edit.sls
index 86ebb5d..22c43b3 100644
--- a/lib/jerboa-emacs/qt/commands-edit.sls
+++ b/lib/jerboa-emacs/qt/commands-edit.sls
@@ -897,7 +897,7 @@
                  (lambda (e)
                    (let ([msg (with-output-to-string
                                 (lambda () (display-exception e)))])
-                     (gemacs-log! "cmd-shell: gsh init failed: " msg)
+                     (jemacs-log! "cmd-shell: gsh init failed: " msg)
                      (echo-error!
                        (app-state-echo app)
                        (string-append "Shell failed: " msg))))
diff --git a/lib/jerboa-emacs/qt/commands-edit2.sls b/lib/jerboa-emacs/qt/commands-edit2.sls
index 0012501..ee74365 100644
--- a/lib/jerboa-emacs/qt/commands-edit2.sls
+++ b/lib/jerboa-emacs/qt/commands-edit2.sls
@@ -1169,7 +1169,7 @@
                (app-state-echo app)
                (string-append "Macros: " (string-join names ", "))))))
   (def (cmd-save-kbd-macros app)
-       "Save named keyboard macros to ~/.gemacs-macros."
+       "Save named keyboard macros to ~/.jemacs-macros."
        (let ([named (app-state-macro-named app)])
          (if (= (hash-length named) 0)
              (echo-message! (app-state-echo app) "No macros to save")
@@ -1178,7 +1178,7 @@
                  (echo-error! (app-state-echo app) "Error saving macros"))
                (lambda ()
                  (let ([path (path-expand
-                               ".gemacs-macros"
+                               ".jemacs-macros"
                                (user-info-home (user-info (user-name))))])
                    (call-with-output-file
                      path
@@ -1195,7 +1195,7 @@
                      (number->string (hash-length named))
                      " macros")))))))
   (def (cmd-load-kbd-macros app)
-       "Load named keyboard macros from ~/.gemacs-macros."
+       "Load named keyboard macros from ~/.jemacs-macros."
        (with-catch
          (lambda (e)
            (echo-message!
@@ -1203,7 +1203,7 @@
              "No saved macros found"))
          (lambda ()
            (let* ([path (path-expand
-                          ".gemacs-macros"
+                          ".jemacs-macros"
                           (user-info-home (user-info (user-name))))]
                   [named (app-state-macro-named app)])
              (call-with-input-file
diff --git a/lib/jerboa-emacs/qt/commands-file.sls b/lib/jerboa-emacs/qt/commands-file.sls
index 40257b0..977563d 100644
--- a/lib/jerboa-emacs/qt/commands-file.sls
+++ b/lib/jerboa-emacs/qt/commands-file.sls
@@ -1045,7 +1045,7 @@
   (define *bookmarks-path*--cell
     (vector
       (path-expand
-        ".gemacs-bookmarks"
+        ".jemacs-bookmarks"
         (user-info-home (user-info (user-name))))))
   (def (bookmarks-save! app)
        "Persist bookmarks to disk. Format: one line per bookmark: name\tfile-path\tposition"
diff --git a/lib/jerboa-emacs/qt/commands-ide.sls b/lib/jerboa-emacs/qt/commands-ide.sls
index 61089e7..9f570e0 100644
--- a/lib/jerboa-emacs/qt/commands-ide.sls
+++ b/lib/jerboa-emacs/qt/commands-ide.sls
@@ -430,8 +430,8 @@
            (app-state-echo app)
            (string-append "Column: " (number->string col)))))
   (def (cmd-emacs-version app)
-       "Show gemacs version."
-       (echo-message! (app-state-echo app) "gemacs (Qt backend)"))
+       "Show jemacs version."
+       (echo-message! (app-state-echo app) "jemacs (Qt backend)"))
   (def (run-git-command app args buffer-name)
        "Run a git command async and show output in a buffer."
        (let* ([buf (current-qt-buffer app)]
diff --git a/lib/jerboa-emacs/qt/commands-ide2.sls b/lib/jerboa-emacs/qt/commands-ide2.sls
index 5e4d585..46aeafb 100644
--- a/lib/jerboa-emacs/qt/commands-ide2.sls
+++ b/lib/jerboa-emacs/qt/commands-ide2.sls
@@ -605,7 +605,7 @@
                        (lambda (job)
                          (with-catch
                            (lambda (e)
-                             (gemacs-log!
+                             (jemacs-log!
                                "wgrep write error: "
                                (object->string e)))
                            (lambda ()
@@ -700,7 +700,7 @@
   (define *session-path*--cell
     (vector
       (path-expand
-        ".gemacs-session"
+        ".jemacs-session"
         (user-info-home (user-info (user-name))))))
   (def (session-save! app)
        "Save current session (open file buffers + positions) to disk."
diff --git a/lib/jerboa-emacs/qt/commands-modes.sls b/lib/jerboa-emacs/qt/commands-modes.sls
index cae7837..b3caf35 100644
--- a/lib/jerboa-emacs/qt/commands-modes.sls
+++ b/lib/jerboa-emacs/qt/commands-modes.sls
@@ -211,7 +211,7 @@
            (let* ([port (open-process
                           (list 'path: "curl" 'arguments:
                             (list "-sL" "-m" "10" "-A"
-                              "Mozilla/5.0 (compatible; gemacs eww)" url)
+                              "Mozilla/5.0 (compatible; jemacs eww)" url)
                             'stdout-redirection: #t 'stderr-redirection: #f
                             'pseudo-terminal: #f))]
                   [output (read-line port #f)])
@@ -221,7 +221,7 @@
        "Fetch a URL async using curl. Calls (callback html-or-#f) on UI thread."
        (async-process!
          (string-append
-           "curl -sL -m 10 -A 'Mozilla/5.0 (compatible; gemacs eww)' "
+           "curl -sL -m 10 -A 'Mozilla/5.0 (compatible; jemacs eww)' "
            "'"
            (string-map (lambda (c) (if (char=? c #\') #\_ c)) url)
            "'")
@@ -768,10 +768,10 @@
   (define *diary-file*--cell
     (vector
       (path-expand
-        ".gemacs-diary"
+        ".jemacs-diary"
         (user-info-home (user-info (user-name))))))
   (def (diary-entries-for-month year month)
-       "Read diary entries for year/month from ~/.gemacs-diary.\n   Format: YYYY-MM-DD entry text"
+       "Read diary entries for year/month from ~/.jemacs-diary.\n   Format: YYYY-MM-DD entry text"
        (if (not (file-exists? *diary-file*))
            (list)
            (with-catch
@@ -807,7 +807,7 @@
                (qt-text-document-set-modified! (buffer-doc-pointer buf) #f)
                (qt-plain-text-edit-set-cursor-position! ed 0)))))
   (def (cmd-diary-insert-entry app)
-       "Add a diary entry for today to ~/.gemacs-diary."
+       "Add a diary entry for today to ~/.jemacs-diary."
        (let* ([date-str (with-catch
                           (lambda (e) "2026-01-01")
                           (lambda ()
@@ -983,7 +983,7 @@
   (define *custom-keys-path*--cell
     (vector
       (path-expand
-        ".gemacs-keys"
+        ".jemacs-keys"
         (user-info-home (user-info (user-name))))))
   (def (cmd-global-set-key app)
        "Bind a key to a command interactively."
@@ -1109,10 +1109,10 @@
   (define *init-file-path*--cell
     (vector
       (path-expand
-        ".gemacs-init.ss"
+        ".jemacs-init.ss"
         (user-info-home (user-info (user-name))))))
   (def (load-init-file!)
-       "Load user init file (~/.gemacs-init.ss) if it exists."
+       "Load user init file (~/.jemacs-init.ss) if it exists."
        (with-catch
          (lambda (e) #f)
          (lambda ()
@@ -1157,7 +1157,7 @@
   (define *scratch-file-path*--cell
     (vector
       (path-expand
-        ".gemacs-scratch"
+        ".jemacs-scratch"
         (user-info-home (user-info (user-name))))))
   (def (scratch-save!)
        "Save scratch buffer contents to disk."
diff --git a/lib/jerboa-emacs/qt/commands-modes2.sls b/lib/jerboa-emacs/qt/commands-modes2.sls
index 8da148f..7f77a2f 100644
--- a/lib/jerboa-emacs/qt/commands-modes2.sls
+++ b/lib/jerboa-emacs/qt/commands-modes2.sls
@@ -806,12 +806,12 @@
        "Show use-package statistics."
        (echo-message!
          (app-state-echo app)
-         "Gemacs: all packages built-in. No external packages to report."))
+         "Jemacs: all packages built-in. No external packages to report."))
   (def (cmd-straight-use-package app)
-       "Configure straight.el package — N/A in gemacs."
+       "Configure straight.el package — N/A in jemacs."
        (echo-message!
          (app-state-echo app)
-         "Gemacs uses built-in packages. straight.el not applicable."))
+         "Jemacs uses built-in packages. straight.el not applicable."))
   (def (cmd-which-key-show-top-level app)
        "Show all top-level key bindings — delegates to describe-bindings."
        (cmd-describe-bindings app))
@@ -1264,10 +1264,10 @@
              "Prescient mode enabled"
              "Prescient mode disabled")))
   (def (cmd-no-littering-mode app)
-       "No-littering mode — gemacs uses ~/.gemacs-* by default."
+       "No-littering mode — jemacs uses ~/.jemacs-* by default."
        (echo-message!
          (app-state-echo app)
-         "Gemacs uses ~/.gemacs-* files; no littering by default"))
+         "Jemacs uses ~/.jemacs-* files; no littering by default"))
   (def (fmt-bytes-short b)
        "Format byte count for display."
        (cond
@@ -1283,7 +1283,7 @@
             " B")]))
   (def (cmd-benchmark-init-show-durations app)
        "Show runtime statistics — Chez version, platform."
-       (let* ([out (string-append "=== Gemacs Runtime Statistics ===\n\n"
+       (let* ([out (string-append "=== Jemacs Runtime Statistics ===\n\n"
                      "Chez:            " (scheme-version) "\n"
                      "Platform:        " (symbol->string (machine-type))
                      "\n")]
diff --git a/lib/jerboa-emacs/qt/commands-parity.sls b/lib/jerboa-emacs/qt/commands-parity.sls
index 28ed3bc..1fcd76b 100644
--- a/lib/jerboa-emacs/qt/commands-parity.sls
+++ b/lib/jerboa-emacs/qt/commands-parity.sls
@@ -1085,9 +1085,9 @@
   (def (cmd-select-window-9 app)
        (cmd-select-window-by-number app 9))
   (def (cmd-help-with-tutorial app)
-       "Show the gemacs tutorial (C-h t)."
-       (let* ([text (string-append "=== Gemacs Tutorial ===\n\n"
-                     "Welcome to Gemacs, a Gerbil Scheme Emacs replacement.\n\n"
+       "Show the jemacs tutorial (C-h t)."
+       (let* ([text (string-append "=== Jemacs Tutorial ===\n\n"
+                     "Welcome to Jemacs, a Gerbil Scheme Emacs replacement.\n\n"
                      "== Basic Movement ==\n"
                      "  C-f / C-b    Forward / backward character\n"
                      "  M-f / M-b    Forward / backward word\n"
@@ -1127,7 +1127,7 @@
                      "  M-RET        Insert heading\n"
                      "  C-c C-t      Toggle TODO\n"
                      "  C-c C-c      Execute src block\n\n"
-                     "== Gemacs-Specific ==\n"
+                     "== Jemacs-Specific ==\n"
                      "  M-x magit-status   Git integration\n"
                      "  M-x treemacs       File tree\n"
                      "  M-x shell          Shell\n"
diff --git a/lib/jerboa-emacs/qt/commands-parity3.sls b/lib/jerboa-emacs/qt/commands-parity3.sls
index c4e18f2..954690a 100644
--- a/lib/jerboa-emacs/qt/commands-parity3.sls
+++ b/lib/jerboa-emacs/qt/commands-parity3.sls
@@ -297,7 +297,7 @@
            "Use M-x yas-insert-snippet for snippets")
          (yas-visit-snippet-file
            .
-           "Snippet files managed via ~/.gemacs-snippets"))))
+           "Snippet files managed via ~/.jemacs-snippets"))))
   (def (qt-register-parity3-stubs!)
        "Register stub commands for Qt parity."
        (for-each
diff --git a/lib/jerboa-emacs/qt/commands-parity3b.sls b/lib/jerboa-emacs/qt/commands-parity3b.sls
index 6d23307..c0f9590 100644
--- a/lib/jerboa-emacs/qt/commands-parity3b.sls
+++ b/lib/jerboa-emacs/qt/commands-parity3b.sls
@@ -625,7 +625,7 @@
          (app-state-echo app)
          "Stack: (empty — cleared)"))
   (def (cmd-server-start app)
-       "Show IPC server status — gemacs-client opens files in this session."
+       "Show IPC server status — jemacs-client opens files in this session."
        (if (file-exists? *ipc-server-file*)
            (let* ([addr (with-exception-catcher
                           (lambda (e) "unknown")
@@ -636,11 +636,11 @@
                   [msg (string-append
                          "Server running on "
                          (or addr "unknown")
-                         " — use: gemacs-client <file>")])
+                         " — use: jemacs-client <file>")])
              (echo-message! (app-state-echo app) msg))
            (echo-message!
              (app-state-echo app)
-             "No server running (start gemacs-qt to enable)")))
+             "No server running (start jemacs-qt to enable)")))
   (def (cmd-server-edit app)
        (execute-command! app 'find-file))
   (def (cmd-server-force-delete app)
@@ -1124,7 +1124,7 @@
        (let* ([ed (current-qt-editor app)]
               [report (with-output-to-string
                         (lambda ()
-                          (display "Gemacs Memory Usage\n")
+                          (display "Jemacs Memory Usage\n")
                           (display (make-string 40 #\-))
                           (display "\n")
                           (display "Chez: ")
@@ -1945,11 +1945,11 @@
   (def (cmd-complete-word-from-buffer app)
        (execute-command! app 'hippie-expand))
   (def (cmd-add-dir-local-variable app)
-       "Prompt for variable and value, append to .gemacs-config in project root."
+       "Prompt for variable and value, append to .jemacs-config in project root."
        (let* ([buf (current-qt-buffer app)]
               [fp (and buf (buffer-file-path buf))]
               [dir (if fp (path-directory fp) (current-directory))]
-              [config-path (path-expand ".gemacs-config" dir)]
+              [config-path (path-expand ".jemacs-config" dir)]
               [var (qt-echo-read-string app "Dir-local variable: ")])
          (when (and var (> (string-length var) 0))
            (let ([val (qt-echo-read-string
diff --git a/lib/jerboa-emacs/qt/commands-parity5.sls b/lib/jerboa-emacs/qt/commands-parity5.sls
index a94dbd5..aad00eb 100644
--- a/lib/jerboa-emacs/qt/commands-parity5.sls
+++ b/lib/jerboa-emacs/qt/commands-parity5.sls
@@ -329,7 +329,7 @@
                          ""))]
               [template-dir (string-append
                               (getenv "HOME" "/tmp")
-                              "/.gemacs-templates")]
+                              "/.jemacs-templates")]
               [template-file (string-append template-dir "/" ext)])
          (cond
            [(and (not (string=? ext "")) (file-exists? template-file))
@@ -526,7 +526,7 @@
        (execute-command! app 'ispell-word))
   (def (cmd-help-for-help app)
        (let* ([fr (app-state-frame app)]
-              [help-text (string-append "Gemacs Help System\n"
+              [help-text (string-append "Jemacs Help System\n"
                           "==================\n\n"
                           "You have typed C-h, the help character. Type a Help option:\n\n"
                           "Key Bindings:\n"
@@ -568,7 +568,7 @@
                           "  M-x occur  Show matching lines\n\n" "Other:\n"
                           "  M-x      Execute command by name\n"
                           "  C-g      Cancel current operation\n"
-                          "  C-x C-c  Quit Gemacs\n")])
+                          "  C-x C-c  Quit Jemacs\n")])
          (let* ([win (qt-current-window fr)]
                 [ed (qt-edit-window-editor win)]
                 [help-buf (qt-buffer-create! "*Help*" ed #f)])
@@ -1068,7 +1068,7 @@
               [ed (qt-edit-window-editor win)]
               [buf (qt-buffer-create! "*Customize*" ed #f)]
               [groups (custom-groups)]
-              [lines (list "Gemacs Customize" (make-string 60 #\=) "")])
+              [lines (list "Jemacs Customize" (make-string 60 #\=) "")])
          (for-each
            (lambda (group)
              (set! lines
diff --git a/lib/jerboa-emacs/qt/commands-search.sls b/lib/jerboa-emacs/qt/commands-search.sls
index e3a7ec3..c78a859 100644
--- a/lib/jerboa-emacs/qt/commands-search.sls
+++ b/lib/jerboa-emacs/qt/commands-search.sls
@@ -1229,7 +1229,7 @@
                     [current-text (qt-plain-text-edit-text ed)]
                     [file-text (read-file-as-string path)]
                     [tmp-path (string-append
-                                "/tmp/gemacs-diff-"
+                                "/tmp/jemacs-diff-"
                                 (number->string (random-integer 100000)))]
                     [_ (write-string-to-file tmp-path current-text)]
                     [result (with-catch
diff --git a/lib/jerboa-emacs/qt/commands-sexp2.sls b/lib/jerboa-emacs/qt/commands-sexp2.sls
index 2d96a6b..0c2e898 100644
--- a/lib/jerboa-emacs/qt/commands-sexp2.sls
+++ b/lib/jerboa-emacs/qt/commands-sexp2.sls
@@ -327,7 +327,7 @@
               [files (filter (lambda (f) f) (map buffer-file-path bufs))]
               [session-file (string-append
                               (getenv "HOME" "/tmp")
-                              "/.gemacs-session")])
+                              "/.jemacs-session")])
          (with-catch
            (lambda (e)
              (echo-message! (app-state-echo app) "Error saving session"))
@@ -348,7 +348,7 @@
        "Restore desktop session from saved file list."
        (let ([session-file (string-append
                              (getenv "HOME" "/tmp")
-                             "/.gemacs-session")])
+                             "/.jemacs-session")])
          (if (file-exists? session-file)
              (with-catch
                (lambda (e)
@@ -389,13 +389,13 @@
        "Clear saved session file."
        (let ([session-file (string-append
                              (getenv "HOME" "/tmp")
-                             "/.gemacs-session")])
+                             "/.jemacs-session")])
          (when (file-exists? session-file)
            (delete-file session-file))
          (echo-message! (app-state-echo app) "Session cleared")))
   (define *qt-history-file*--cell
     (vector
-      (string-append (getenv "HOME" "/tmp") "/.gemacs-history")))
+      (string-append (getenv "HOME" "/tmp") "/.jemacs-history")))
   (def (cmd-savehist-save app)
        "Save command history to disk."
        (with-catch
diff --git a/lib/jerboa-emacs/qt/commands-shell.sls b/lib/jerboa-emacs/qt/commands-shell.sls
index 007fd35..c6d5e3b 100644
--- a/lib/jerboa-emacs/qt/commands-shell.sls
+++ b/lib/jerboa-emacs/qt/commands-shell.sls
@@ -478,7 +478,7 @@
          (if *follow-mode* "Follow mode ON" "Follow mode OFF")))
   (define *command-history-file*--cell
     (vector
-      (string-append (getenv "HOME" "/tmp") "/.gemacs-history")))
+      (string-append (getenv "HOME" "/tmp") "/.jemacs-history")))
   (def (savehist-save!)
        "Save command history to file (recency list + shared frequency history)."
        (with-catch
@@ -1858,7 +1858,7 @@
   (define *abbrevs-path*--cell
     (vector
       (path-expand
-        ".gemacs-abbrevs"
+        ".jemacs-abbrevs"
         (user-info-home (user-info (user-name))))))
   (def (abbrevs-save!)
        "Persist abbreviation table to disk."
diff --git a/lib/jerboa-emacs/qt/commands-shell2.sls b/lib/jerboa-emacs/qt/commands-shell2.sls
index 89bbc8d..f6915c2 100644
--- a/lib/jerboa-emacs/qt/commands-shell2.sls
+++ b/lib/jerboa-emacs/qt/commands-shell2.sls
@@ -76,7 +76,7 @@
                    (echo-error! (app-state-echo app) "Sudo save failed"))
                  (lambda ()
                    (let ([tmp (string-append
-                                "/tmp/.gemacs-sudo-"
+                                "/tmp/.jemacs-sudo-"
                                 (number->string (random-integer 999999)))])
                      (call-with-output-file
                        tmp
@@ -380,8 +380,8 @@
                    (string-append "Buffer not found: " other-name))
                  (let* ([ed (current-qt-editor app)]
                         [text1 (qt-plain-text-edit-text ed)]
-                        [tmp1 "/tmp/gemacs-ediff-1.txt"]
-                        [tmp2 "/tmp/gemacs-ediff-2.txt"])
+                        [tmp1 "/tmp/jemacs-ediff-1.txt"]
+                        [tmp2 "/tmp/jemacs-ediff-2.txt"])
                    (call-with-output-file
                      tmp1
                      (lambda (p) (display text1 p)))
@@ -662,7 +662,7 @@
                (let loop ([i hunk-line] [acc (list)])
                  (if (>= i (length lines))
                      (let* ([hunk-text (string-join (reverse acc) "\n")]
-                            [tmp "/tmp/gemacs-hunk.patch"])
+                            [tmp "/tmp/jemacs-hunk.patch"])
                        (with-catch
                          (lambda (e)
                            (echo-error!
@@ -701,7 +701,7 @@
                (let loop ([i hunk-line] [acc (list)])
                  (if (>= i (length lines))
                      (let* ([hunk-text (string-join (reverse acc) "\n")]
-                            [tmp "/tmp/gemacs-revert-hunk.patch"])
+                            [tmp "/tmp/jemacs-revert-hunk.patch"])
                        (with-catch
                          (lambda (e)
                            (echo-error!
@@ -826,7 +826,7 @@
                (echo-error! (app-state-echo app) "SSH fetch failed"))
              (lambda ()
                (let* ([tmp (string-append
-                             "/tmp/gemacs-ssh-"
+                             "/tmp/jemacs-ssh-"
                              (number->string (random-integer 99999)))]
                       [proc (open-process
                               (list 'path: "scp" 'arguments: (list path tmp)
@@ -1009,7 +1009,7 @@
   (define *qt-elfeed-entries*--cell (vector '()))
   (def (qt-elfeed-db-path)
        (let ([home (getenv "HOME" "/tmp")])
-         (string-append home "/.gemacs-elfeed-feeds")))
+         (string-append home "/.jemacs-elfeed-feeds")))
   (def (qt-elfeed-load-feeds!)
        (let ([path (qt-elfeed-db-path)])
          (when (file-exists? path)
diff --git a/lib/jerboa-emacs/qt/commands-vcs.sls b/lib/jerboa-emacs/qt/commands-vcs.sls
index 7b208d3..652be33 100644
--- a/lib/jerboa-emacs/qt/commands-vcs.sls
+++ b/lib/jerboa-emacs/qt/commands-vcs.sls
@@ -22,8 +22,8 @@
    cmd-list-recent-files cmd-clear-recent-files
    cmd-recentf-open cmd-recentf-cleanup cmd-multi-occur
    cmd-align-current cmd-clear-rectangle cmd-describe-mode
-   cmd-describe-face cmd-describe-function *gemacs-variables*
-   gemacs-var-entry gemacs-describe-variables
+   cmd-describe-face cmd-describe-function *jemacs-variables*
+   jemacs-var-entry jemacs-describe-variables
    cmd-describe-variable cmd-describe-syntax
    cmd-insert-lorem-ipsum cmd-insert-current-date-iso
    cmd-insert-time *eldoc-mode* *gerbil-signatures*
@@ -908,7 +908,7 @@
   (define *recent-files-path*--cell
     (vector
       (path-expand
-        ".gemacs-recent-files"
+        ".jemacs-recent-files"
         (user-info-home (user-info (user-name))))))
   (def (recent-files-add! path)
        "Add a file path to the recent files list (most recent first, no duplicates)."
@@ -1234,61 +1234,61 @@
                  (echo-error!
                    (app-state-echo app)
                    (string-append name " is not a command")))))))
-  (define *gemacs-variables*--cell (vector '()))
-  (def (gemacs-var-entry name thunk description)
+  (define *jemacs-variables*--cell (vector '()))
+  (def (jemacs-var-entry name thunk description)
        (list name thunk description))
-  (def (gemacs-describe-variables)
+  (def (jemacs-describe-variables)
        "Build list of describable editor variables with current values."
        (list
-         (gemacs-var-entry
+         (jemacs-var-entry
            "debug-on-error"
            (lambda () *debug-on-error*)
            "Enter debugger on error")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "hl-line-mode"
            (lambda () *hl-line-mode*)
            "Highlight current line")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "hl-todo-mode"
            (lambda () *hl-todo-mode*)
            "Highlight TODO keywords")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "hl-todo-keywords"
            (lambda () *hl-todo-keywords*)
            "Keywords highlighted by hl-todo-mode")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "wgrep-mode"
            (lambda () *wgrep-mode*)
            "Writable grep buffer active")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "magit-dir"
            (lambda () *magit-dir*)
            "Current magit working directory")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "magit-amend-mode"
            (lambda () *magit-amend-mode*)
            "Amend mode for magit commit")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "current-workspace"
            (lambda () *current-workspace*)
            "Active workspace name")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "tab-width"
            (lambda () *tab-width*)
            "Width of tab stops")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "indent-tabs-mode"
            (lambda () *indent-tabs-mode*)
            "Use tabs for indentation")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "word-wrap"
            (lambda () *word-wrap-on*)
            "Word wrap mode")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "undo-history-max"
            (lambda () *undo-history-max*)
            "Max undo snapshots per buffer")
-         (gemacs-var-entry
+         (jemacs-var-entry
            "recenter-position"
            (lambda () *recenter-position-qt*)
            "Recentering position (center/top/bottom)")))
@@ -2088,11 +2088,11 @@
                        *recent-files-path*--cell
                        0
                        val)]))
-  (define-syntax *gemacs-variables*
+  (define-syntax *jemacs-variables*
     (identifier-syntax
-      [id (vector-ref *gemacs-variables*--cell 0)]
+      [id (vector-ref *jemacs-variables*--cell 0)]
       [(set! id val) (vector-set!
-                       *gemacs-variables*--cell
+                       *jemacs-variables*--cell
                        0
                        val)]))
   (define-syntax *eldoc-mode*
diff --git a/lib/jerboa-emacs/qt/commands.sls b/lib/jerboa-emacs/qt/commands.sls
index e0f527a..c652a72 100644
--- a/lib/jerboa-emacs/qt/commands.sls
+++ b/lib/jerboa-emacs/qt/commands.sls
@@ -206,7 +206,7 @@
                (if (not config)
                    (echo-message!
                      (app-state-echo app)
-                     "No .gemacs-config found")
+                     "No .jemacs-config found")
                    (let ([settings (read-dir-locals config)])
                      (echo-message!
                        (app-state-echo app)
@@ -2007,7 +2007,7 @@
    (register-command!
      'set-window-dedicated
      cmd-set-window-dedicated)
-   (register-command! 'gemacs-doc cmd-gemacs-doc)
+   (register-command! 'jemacs-doc cmd-jemacs-doc)
    (register-command! 'dired-async-copy cmd-dired-async-copy)
    (register-command! 'dired-async-move cmd-dired-async-move)
    (register-command!
@@ -2148,16 +2148,16 @@
                  (string-append "Header: " (or path (buffer-name buf)))))
              (echo-message! echo "Header line mode disabled"))))
   (def (cmd-project-keymap-load app)
-       "Load project-specific keybindings from .gemacs-keys in project root."
+       "Load project-specific keybindings from .jemacs-keys in project root."
        (let* ([root (project-current app)]
               [echo (app-state-echo app)])
          (if (not root)
              (echo-message! echo "Not in a project")
-             (let ([keyfile (path-expand ".gemacs-keys" root)])
+             (let ([keyfile (path-expand ".jemacs-keys" root)])
                (if (not (file-exists? keyfile))
                    (echo-message!
                      echo
-                     (string-append "No .gemacs-keys in " root))
+                     (string-append "No .jemacs-keys in " root))
                    (with-catch
                      (lambda (e)
                        (echo-message!
@@ -2311,11 +2311,11 @@
        (let* ([ed (current-qt-editor app)]
               [echo (app-state-echo app)]
               [fr (app-state-frame app)]
-              [content (string-append "Gemacs Info\n" "===========\n\n"
+              [content (string-append "Jemacs Info\n" "===========\n\n"
                          "* Commands: M-x to run any command\n"
                          "* Keybindings: C-h k to describe a key\n"
                          "* Org Mode: Full org support with babel, export, agenda\n"
-                         "* Configuration: ~/.gemacs-init, ~/.gemacs-config\n\n"
+                         "* Configuration: ~/.jemacs-init, ~/.jemacs-config\n\n"
                          "Movement: C-f/C-b (char), M-f/M-b (word), C-n/C-p (line)\n"
                          "Editing: C-k (kill), C-y (yank), C-/ (undo), C-w (cut)\n"
                          "Files: C-x C-f (open), C-x C-s (save), C-x b (switch)\n"
@@ -2487,8 +2487,8 @@
                        old-name
                        " → "
                        new-name)))))))))
-  (def (cmd-gemacs-doc app)
-       "Browse gemacs documentation (Qt)."
+  (def (cmd-jemacs-doc app)
+       "Browse jemacs documentation (Qt)."
        (let* ([ed (current-qt-editor app)]
               [echo (app-state-echo app)]
               [fr (app-state-frame app)]
@@ -2499,7 +2499,7 @@
            (let* ([key (string-downcase topic)]
                   [content (cond
                              [(string=? key "getting-started")
-                              "Getting Started with Gemacs\n==========================\n\nOpen: C-x C-f | Save: C-x C-s | Quit: C-x C-c\nSearch: C-s | Replace: M-% | Undo: C-/\nWindows: C-x 2 (split), C-x o (other), C-x 1 (unsplit)\nBuffers: C-x b (switch), C-x k (kill)\nHelp: C-h k (describe key), M-x (run command)\n"]
+                              "Getting Started with Jemacs\n==========================\n\nOpen: C-x C-f | Save: C-x C-s | Quit: C-x C-c\nSearch: C-s | Replace: M-% | Undo: C-/\nWindows: C-x 2 (split), C-x o (other), C-x 1 (unsplit)\nBuffers: C-x b (switch), C-x k (kill)\nHelp: C-h k (describe key), M-x (run command)\n"]
                              [(string=? key "keybindings")
                               "Keybinding Reference\n====================\n\nC-f/C-b Forward/Back | M-f/M-b Word | C-n/C-p Line\nC-a/C-e BOL/EOL | M-</M-> BOB/EOB | C-v/M-v Page\nC-d Del | C-k Kill line | C-w Cut | M-w Copy | C-y Yank\nC-x C-f Open | C-x C-s Save | C-x b Switch | C-x k Kill\nC-s Search | C-r Reverse | M-% Replace\nC-x 2/3 Split | C-x 0/1 Delete | C-x o Other\n"]
                              [(string=? key "commands")
@@ -2603,7 +2603,7 @@
                      "  ;; " desc)
                    lines))))
            *qt-customizable-vars*)
-         (let* ([text (string-append "Gemacs Customize\n" "================\n\n"
+         (let* ([text (string-append "Jemacs Customize\n" "================\n\n"
                         "Current settings:\n\n"
                         (string-join (reverse lines) "\n")
                         "\n\nUse M-x set-variable to change a setting.\n")]
@@ -2616,7 +2616,7 @@
            (qt-plain-text-edit-set-cursor-position! ed 0))))
   (def *qt-process-sentinels* (make-hash-table))
   (def *qt-process-filters* (make-hash-table))
-  (def *qt-plugin-directory* "~/.gemacs-plugins")
+  (def *qt-plugin-directory* "~/.jemacs-plugins")
   (def *qt-loaded-plugins* (list))
   (def (cmd-load-plugin app)
        "Load a Gerbil Scheme plugin file (Qt)."
@@ -2657,7 +2657,7 @@
               [ss-files (filter
                           (lambda (f) (string-suffix? ".ss" f))
                           available)]
-              [text (string-append "Gemacs Plugins\n" "==============\n\n"
+              [text (string-append "Jemacs Plugins\n" "==============\n\n"
                       "Loaded plugins:\n"
                       (if (null? *qt-loaded-plugins*)
                           "  (none)\n"
diff --git a/lib/jerboa-emacs/qt/lsp-client.sls b/lib/jerboa-emacs/qt/lsp-client.sls
index 2839e62..984ec59 100644
--- a/lib/jerboa-emacs/qt/lsp-client.sls
+++ b/lib/jerboa-emacs/qt/lsp-client.sls
@@ -26,7 +26,7 @@
       getenv path-extension path-absolute? thread? make-mutex
       mutex? mutex-name)
     (std sugar) (std text json) (std misc string) (std os fdio)
-    (only (jerboa-emacs core) *lsp-server-command* gemacs-log!)
+    (only (jerboa-emacs core) *lsp-server-command* jemacs-log!)
     (jerboa-emacs async) (jerboa core) (jerboa runtime))
   (define *lsp-process*--cell (vector #f))
   (define *lsp-reader-thread*--cell (vector #f))
@@ -365,7 +365,7 @@
            params
            "clientInfo"
            (let ([h (make-hash-table)])
-             (hash-put! h "name" "gemacs")
+             (hash-put! h "name" "jemacs")
              (hash-put! h "version" "1.0")
              h))
          (lsp-send-request!
diff --git a/lib/jerboa-emacs/qt/main.sls b/lib/jerboa-emacs/qt/main.sls
index 21d8487..6cc9c0e 100644
--- a/lib/jerboa-emacs/qt/main.sls
+++ b/lib/jerboa-emacs/qt/main.sls
@@ -18,19 +18,19 @@
   (def (main . args)
        (cond
          [(member "--version" args)
-          (displayln "gemacs " (cdar version-manifest))
+          (displayln "jemacs " (cdar version-manifest))
           (for-each
             (lambda (p)
               (when (not (string=? (car p) ""))
                 (displayln (car p) " " (cdr p))))
             (cdr version-manifest))]
          [(member "--help" args)
-          (displayln "Usage: gemacs-qt [OPTIONS] [FILES...]")
+          (displayln "Usage: jemacs-qt [OPTIONS] [FILES...]")
           (displayln "Options:")
           (displayln "  --version        Show version information")
           (displayln "  --help           Show this help message")
           (displayln
-            "  --verbose        Log all Qt calls and commands to ~/.gemacs-verbose.log")
+            "  --verbose        Log all Qt calls and commands to ~/.jemacs-verbose.log")
           (displayln
             "  --repl <port>    Start TCP debug REPL on given port (0=auto)")]
          [else (apply qt-main args)])))
diff --git a/lib/jerboa-emacs/qt/window.sls b/lib/jerboa-emacs/qt/window.sls
index 981ac7e..50dcbe0 100644
--- a/lib/jerboa-emacs/qt/window.sls
+++ b/lib/jerboa-emacs/qt/window.sls
@@ -199,7 +199,8 @@
                      ed
                      SCI_STYLESETBACK
                      STYLE_LINENUMBER
-                     (rgb->sci r g b))))
+                     (rgb->sci r g b))
+                   (sci-send ed 2260 0 (rgb->sci r g b))))
                (when (face-fg ln-face)
                  (let-values ([(r g b)
                                (parse-hex-color (face-fg ln-face))])
@@ -214,6 +215,7 @@
                  SCI_STYLESETBACK
                  STYLE_LINENUMBER
                  (rgb->sci 32 32 32))
+               (sci-send ed 2260 0 (rgb->sci 32 32 32))
                (sci-send
                  ed
                  SCI_STYLESETFORE
@@ -234,6 +236,18 @@
        (qt-apply-editor-theme! ed)
        (sci-send ed SCI_SETMARGINTYPEN 0 SC_MARGIN_NUMBER)
        (sci-send ed SCI_SETMARGINWIDTHN 0 50)
+       (sci-send ed SCI_SETMARGINWIDTHN 1 0)
+       (sci-send ed SCI_SETMARGINWIDTHN 2 0)
+       (sci-send ed SCI_SETMARGINWIDTHN 3 0)
+       (sci-send ed SCI_SETMARGINWIDTHN 4 0)
+       (let ([bg (let ([f (face-get 'default)])
+                   (if (and f (face-bg f))
+                       (let-values ([(r g b)
+                                     (parse-hex-color (face-bg f))])
+                         (rgb->sci r g b))
+                       (rgb->sci 30 30 46)))])
+         (sci-send ed 2290 1 bg)
+         (sci-send ed 2291 1 bg))
        (sci-send ed SCI_SETCARETLINEVISIBLE 1)
        (sci-send ed SCI_SETTABWIDTH 4)
        (sci-send ed SCI_SETINDENT 4) (sci-send ed 2563 1)
diff --git a/src/jerboa-emacs/app.ss b/src/jerboa-emacs/app.ss
index b16c5ab..8b0a275 100644
--- a/src/jerboa-emacs/app.ss
+++ b/src/jerboa-emacs/app.ss
@@ -1,5 +1,5 @@
 ;;; -*- Gerbil -*-
-;;; Main application and event loop for gemacs
+;;; Main application and event loop for jemacs
 
 (export app-init! app-run! main tui-session-save!)
 
@@ -75,7 +75,7 @@
 ;;;============================================================================
 
 (def *tui-session-path*
-  (path-expand ".gemacs-session" (user-info-home (user-info (user-name)))))
+  (path-expand ".jemacs-session" (user-info-home (user-info (user-name)))))
 
 (def (tui-session-save! app)
   "Save current session (open file buffers) to disk."
@@ -218,7 +218,7 @@
         (if (and saved (> (string-length saved) 0))
           (editor-set-text ed saved)
           (editor-set-text ed (string-append
-            ";; Gerbil Emacs — *scratch*\n"
+            ";; Jemacs — *scratch*\n"
             ";;\n"
             ";; Key Bindings:\n"
             ";;   C-x C-f   Find file        C-x C-s   Save buffer\n"
@@ -239,7 +239,7 @@
     (for-each (lambda (file) (open-file-in-app! app file))
               files)
 
-    ;; Start IPC server for gemacs-client
+    ;; Start IPC server for jemacs-client
     (start-ipc-server!)
 
     ;; Run after-init-hook (parity with Qt layer)
@@ -309,7 +309,7 @@
           (when mode-cmd (mode-cmd app)))))))))
 
 ;;;============================================================================
-;;; IPC polling (files opened via gemacs-client)
+;;; IPC polling (files opened via jemacs-client)
 ;;;============================================================================
 
 (def (poll-ipc-files! app)
@@ -557,7 +557,7 @@
       ;; Poll AI chat output
       (poll-chat-output! app)
 
-      ;; Poll IPC queue for files opened via gemacs-client
+      ;; Poll IPC queue for files opened via jemacs-client
       (poll-ipc-files! app)
 
       ;; Tick pulse highlight countdown
diff --git a/src/jerboa-emacs/core.ss b/src/jerboa-emacs/core.ss
index 7486ba7..5e3806a 100644
--- a/src/jerboa-emacs/core.ss
+++ b/src/jerboa-emacs/core.ss
@@ -109,9 +109,6 @@
   ;; Runtime error log file
   init-jemacs-log!
   jemacs-log!
-  ;; Compatibility aliases (Qt source files use gemacs-* naming)
-  init-gemacs-log!
-  gemacs-log!
 
   ;; Verbose hang-diagnosis log (~/.jemacs-verbose.log)
   init-verbose-log!
@@ -1910,9 +1907,8 @@
       (newline port)
       (force-output port))))
 
-;; Compatibility aliases used by Qt source files (ported from gerbil-emacs naming)
-(def gemacs-log!      jemacs-log!)
-(def init-gemacs-log! init-jemacs-log!)
+;; Legacy aliases (kept for backward compatibility)
+;; gemacs-log! and init-gemacs-log! removed — use jemacs-log! / init-jemacs-log! directly
 
 (def (init-verbose-log!)
   "Open ~/.jemacs-verbose.log for append and enable verbose-log!.
@@ -2170,9 +2166,11 @@
 ;; Set of characters that can start a chord (uppercase)
 (def *chord-first-chars* (make-hash-table))
 
-;; Time window in milliseconds for second key of chord
-(def *chord-timeout* 200)
-(defvar! 'chord-timeout 200 "Milliseconds to wait for second key of a chord"
+;; Time window in milliseconds for second key of chord.
+;; Emacs key-chord.el uses 100ms for two-key and 200ms for same-key chords.
+;; We use 300ms by default because Qt key event delivery adds latency.
+(def *chord-timeout* 300)
+(defvar! 'chord-timeout 300 "Milliseconds to wait for second key of a chord"
          setter: (lambda (v) (set! *chord-timeout* v))
          type: 'integer type-args: '(50 . 1000) group: 'keybindings)
 
diff --git a/src/jerboa-emacs/editor-cmds-a.ss b/src/jerboa-emacs/editor-cmds-a.ss
index 3b66b67..f507b04 100644
--- a/src/jerboa-emacs/editor-cmds-a.ss
+++ b/src/jerboa-emacs/editor-cmds-a.ss
@@ -1861,9 +1861,9 @@
   "Initialize the documentation topic database."
   (hash-put! *doc-topics* "getting-started"
     (string-append
-      "Getting Started with Gemacs\n"
+      "Getting Started with Jemacs\n"
       "==========================\n\n"
-      "Gemacs is a Gerbil Scheme-based Emacs-like editor.\n\n"
+      "Jemacs is a Gerbil Scheme-based Emacs-like editor.\n\n"
       "Quick start:\n"
       "  1. Open a file: C-x C-f\n"
       "  2. Edit text: just type\n"
diff --git a/src/jerboa-emacs/editor-cmds-b.ss b/src/jerboa-emacs/editor-cmds-b.ss
index 409f200..03ab372 100644
--- a/src/jerboa-emacs/editor-cmds-b.ss
+++ b/src/jerboa-emacs/editor-cmds-b.ss
@@ -2063,7 +2063,7 @@
          (win (current-window fr))
          (buf (buffer-create! "*Customize*" ed))
          (groups (custom-groups))
-         (lines ["Gemacs Customize"
+         (lines ["Jemacs Customize"
                  "================" ""]))
     (buffer-attach! ed buf)
     (set! (edit-window-buffer win) buf)
@@ -2185,7 +2185,7 @@
                        '()))
            (ss-files (filter (lambda (f) (string-suffix? ".ss" f)) available))
            (text (string-append
-                   "Gemacs Plugins\n"
+                   "Jemacs Plugins\n"
                    "==============\n\n"
                    "Loaded plugins:\n"
                    (if (null? *loaded-plugins*)
diff --git a/src/jerboa-emacs/editor-core.ss b/src/jerboa-emacs/editor-core.ss
index bc6eeae..f9caac1 100644
--- a/src/jerboa-emacs/editor-core.ss
+++ b/src/jerboa-emacs/editor-core.ss
@@ -2337,7 +2337,7 @@
   "Initialize built-in Info documentation topics."