Skip to content
Rudolf Schlatte edited this page Feb 17, 2025 · 16 revisions

project.el

Emacs modes like eglot, the first-party LSP integration, rely on project.el to discover workspace roots. PR for JJ project root detecting is merged. but not included in released version(Planed to included on v2.9). Install projectile from git or add below codes on your emacs config. project.el's heuristics include checks for .git, which will fail in jj repositories that are not colocated. This can be addressed by adding ".jj" to project-vc-extra-root-markers, e.g.:

(use-package project
  :config
  (add-to-list 'project-vc-extra-root-markers ".jj"))

Projectile, an alternative package for project management, has built-in recognition of .jj as being workspace roots already.

ediff as a merge tool

.jjconfig.toml

[merge-tools.ediff]
program = 'sh'
merge-args = ['-c',
  'emacsclient -c --eval "(ediff-merge-files-with-ancestor \"$0\" \"$1\" \"$2\" nil \"$3\")"',
  '$left', '$right', '$base', '$output']

jujutsushi

jujutsushi - A emacs interface to jujutsu is an Emacs package for working with jj from within Emacs.

jujutsu.el

jujutsu.el: An Emacs interface for jujutsu, inspired by magit and humbly not attempting to match it in scope.

vc-jj.el

A work-in-progress jj backend for the built-in vc version control of Emacs.

jj-fzf Integration

The jj-fzf TUI can be integrated into Emacs in terminal mode, to seamlessly carry out commit operations during Emacs use: Integrating jj-fzf into Emacs. The blog article also covers an after-save-hook hook to keep the jj operation log updated with new snapshots once Emacs buffers are saved.

Clone this wiki locally