Which code editor do you use ?

Which code editor do you use ?

  • vim

    Votes: 19 45.2%
  • neovim

    Votes: 7 16.7%
  • vscode

    Votes: 9 21.4%
  • other which one ?

    Votes: 17 40.5%
  • emacs

    Votes: 8 19.0%

  • Total voters
    42
  • This poll will close: .
vim/nvim/macvim/vi
And sometimes some JetBrains tools (absolutely great for code Exploring) such as DataGrip, RubyMine, WebStorm, PyCharm

In case it's of interest to anyone, my vim config is available on gitlab https://gitlab.com/graudeejs/dot.vim.
It's been in development for eternity. Lately I started experimenting with importing all vim plugins directly into my config without using git SubModules or anything like that.

4x problems that I'm trying to solve this way:
1) I don't want to fork every plugin that I use (still may do it)
2) Full control of what is configured - no surprises such as missing repos all of a sudden
3) Full control of what is configured - I don't want to install vim plugin to find out that upstream was hacked with all the possible consequences.
4) Just clone repo and your good to go given than all dependecies are installed on system

Last to can probably handled better, bet hey, I'm experimenting currently this works fine for me.
 
cat init.el
Code:
;;; init.el --- Clojure, Crystal, Scala, D, ruby ,go ,odin , nim || (Zig,nasm,gas,python,markdown :no lsp) ::: :  Setup 2026

(setenv "ODIN_ROOT" "/home/x/git/Odin/core")

;; 1. Appearance & UI
(load-theme 'wombat t)
(global-display-line-numbers-mode t)
(set-face-attribute 'default nil :font "NotoMono Nerd Font" :height 150)
(set-face-attribute 'line-number-current-line nil :foreground "yellow" :background "black" :weight 'bold)

;; 2. Environment & Performance
(setq inhibit-startup-screen t
      initial-scratch-message ""
      native-comp-jit-compilation t) ; Updated for 2026

;; Path management (FreeBSD/Unix)
(dolist (path '("/usr/local/bin" "~/.cargo/bin" "~/.local/bin"))
  (add-to-list 'exec-path (expand-file-name path)))
(setenv "PATH" (string-join exec-path ":"))

;; 3. Package Management (straight.el)
(defvar bootstrap-version)
(let ((bootstrap-file (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
      (bootstrap-url "raw.githubusercontent.com"))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer (url-retrieve-synchronously bootstrap-url 'silent 'inhibit-cookies)
      (goto-char (point-max)) (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

(setq straight-use-package-by-default t)
(straight-use-package 'use-package)

;; 4. Tree-sitter (Automatic Grammar Management)
(use-package treesit-auto
  :demand t
  :config
  (setq treesit-font-lock-level 4
        treesit-auto-install t)
  (add-to-list 'treesit-extra-load-path (expand-file-name "tree-sitter" user-emacs-directory))
  ;; Simplified: let treesit-auto handle the URLs unless you need custom ones
  (treesit-auto-add-to-auto-mode-alist 'all)
  (global-treesit-auto-mode))

;; 5. Language Support & LSP (Eglot)
(use-package odin-ts-mode
  :straight (odin-ts-mode :host github :repo "Sampie159/odin-ts-mode")
  :mode ("\\.odin\\'" . odin-ts-mode))
  
(use-package eglot
  :hook ((clojure-ts-mode . eglot-ensure)
         (clojure-mode    . eglot-ensure)
         (crystal-mode    . eglot-ensure)
         (scala-mode      . eglot-ensure)
         (d-mode          . eglot-ensure)
         (zig-mode        . eglot-ensure)
         (ruby-ts-mode    . eglot-ensure)
         (python-ts-mode  . eglot-ensure)
         (markdown-mode   . eglot-ensure)
         (ponylang-mode   . eglot-ensure)
         (odin-mode       . eglot-ensure) ; Standard mode
         (odin-ts-mode    . eglot-ensure) ; Tree-sitter mode
         (nim-mode        . eglot-ensure))
  :config
  (add-to-list 'eglot-server-programs '(ruby-ts-mode . ("solargraph" "stdio")))
  (add-to-list 'eglot-server-programs '(crystal-mode . ("crystalline" "--stdio")))
  (add-to-list 'eglot-server-programs '(scala-mode   . ("metals")))
  (add-to-list 'eglot-server-programs '(d-mode       . ("serve-d")))
  (add-to-list 'eglot-server-programs '(zig-mode     . ("zls")))
  (add-to-list 'eglot-server-programs '(go-ts-mode   . ("gopls")))
  (add-to-list 'eglot-server-programs '(python-ts-mode . ("pyright-langserver" "--stdio")))
  (add-to-list 'eglot-server-programs '(ponylang-mode . ("pony-lsp")))
  ;; Support both mode types for Odin
  (add-to-list 'eglot-server-programs '(odin-ts-mode . ("ols")))
  (add-to-list 'eglot-server-programs '(nim-mode . ("nimlsp")))
  
  (straight-use-package 'eglot-jl)
  (eglot-jl-init))

;; 6. Major Modes & Remaining Config
(use-package go-ts-mode :mode "\\.go\\'")
(use-package clojure-ts-mode :mode "\\.clj\\'")
(use-package nasm-mode :mode ("\\.asm\\'" "\\.s\\'"))
(use-package markdown-mode :mode ("\\.md\\'" . gfm-mode))
(use-package nim-mode :mode "\\.nim\\'")

;; 7. Completion & UI
(use-package yasnippet :init (yas-global-mode 1))
(use-package company   :init (global-company-mode))
(use-package vertico   :init (vertico-mode 1))
(use-package marginalia :init (marginalia-mode 1))
(use-package smart-mode-line
  :init (setq sml/theme 'dark sml/no-confirm-load-theme t)
  :config (sml/setup))

;; 8. Dependencies
(mapc #'straight-use-package '(dash f s))

(use-package yasnippet
  :hook ((odin-mode . yas-minor-mode)
         (odin-ts-mode . yas-minor-mode)))
 
I struggled getting the hang of emacs for a long time. It has a steep learning cliff. More recently, I've playing with doom emacs which makes things a lot more straightforward. I think of it as a front end for emacs. I'm very much still find my way around it.

This is the lang section of init.el

Code:
      :lang
       ;;ada               ; In strong typing we (blindly) trust
       ;;agda              ; types of types of types of types...
       ;;beancount         ; mind the GAAP
       ;;(cc +lsp)         ; C > C++ == 1
       ;;clojure           ; java with a lisp
       ;;common-lisp       ; if you've seen one lisp, you've seen them all
       ;;coq               ; proofs-as-programs
       ;;crystal           ; ruby at the speed of c
       ;;csharp            ; unity, .NET, and mono shenanigans
       ;;data              ; config/data formats
       ;;(dart +flutter)   ; paint ui and not much else
       ;;dhall
       ;;elixir            ; erlang done right
       ;;elm               ; care for a cup of TEA?
       emacs-lisp        ; drown in parentheses
       ;;erlang            ; an elegant language for a more civilized age
       ;;ess               ; emacs speaks statistics
       ;;factor
       ;;faust             ; dsp, but you get to keep your soul
       ;;fortran           ; in FORTRAN, GOD is REAL (unless declared INTEGER)
       ;;fsharp            ; ML stands for Microsoft's Language
       ;;fstar             ; (dependent) types and (monadic) effects and Z3
       ;;gdscript          ; the language you waited for
       ;;(go +lsp)         ; the hipster dialect
       ;;(graphql +lsp)    ; Give queries a REST
       ;;(haskell +lsp)    ; a language that's lazier than I am
       ;;hy                ; readability of scheme w/ speed of python
       ;;idris             ; a language you can depend on
       ;;json              ; At least it ain't XML
       ;;janet             ; Fun fact: Janet is me!
       ;;(java +lsp)       ; the poster child for carpal tunnel syndrome
       ;;javascript        ; all(hope(abandon(ye(who(enter(here))))))
       ;;julia             ; a better, faster MATLAB
       ;;kotlin            ; a better, slicker Java(Script)
       ;;latex             ; writing papers in Emacs has never been so fun
       ;;lean              ; for folks with too much to prove
       ;;ledger            ; be audit you can be
       ;;lua               ; one-based indices? one-based indices
       markdown          ; writing docs for people to ignore
       ;;nim               ; python + lisp at the speed of c
       ;;nix               ; I hereby declare "nix geht mehr!"
       ;;ocaml             ; an objective camel
       org               ; organize your plain life in plain text
       ;;php               ; perl's insecure younger brother
       ;;plantuml          ; diagrams for confusing people more
       ;;graphviz          ; diagrams for confusing yourself even more
       ;;purescript        ; javascript, but functional
       ;;python            ; beautiful is better than ugly
       ;;qt                ; the 'cutest' gui framework ever
       ;;racket            ; a DSL for DSLs
       ;;raku              ; the artist formerly known as perl6
       ;;rest              ; Emacs as a REST client
       ;;rst               ; ReST in peace
       ;;(ruby +rails)     ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
       ;;(rust +lsp)       ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
       ;;scala             ; java, but good
       ;;(scheme +guile)   ; a fully conniving family of lisps
       sh                ; she sells {ba,z,fi}sh shells on the C xor
       ;;sml
       ;;solidity          ; do you need a blockchain? No.
       ;;swift             ; who asked for emoji variables?
       ;;terra             ; Earth and Moon in alignment for performance.
       ;;web               ; the tubes
       ;;yaml              ; JSON, but readable
       ;;zig               ; C, but simpler
 
My mind could never stick with keyboard controlled editors in text interfaces, so I use Geany; all basic stuff could be done. I open multiple tabs in multiple windows to navigate in the code base. I perform search / replace, auto-completion and auto-indent. That's enough for me.
 
Back
Top