From 45e51a9e7064e1c93c36b2018a0f36e96bd17452 Mon Sep 17 00:00:00 2001 From: xa-m Date: Thu, 1 Jan 2026 15:45:19 +0300 Subject: [PATCH] EMACS files --- .emacs | 39 ++++++++++++ emacs/_bindings.el | 25 ++++++++ emacs/external_packages.el | 92 ++++++++++++++++++++++++++++ emacs/kts_letter.el | 43 +++++++++++++ emacs/kts_letter.elc | Bin 0 -> 3521 bytes emacs/kts_old.el | 49 +++++++++++++++ emacs/lsp.el | 49 +++++++++++++++ emacs/native_comp.el | 4 ++ emacs/old/dired_view_mode.el | 7 +++ emacs/old/rust_docs.el | 6 ++ emacs/old/ssh.el | 14 +++++ emacs/random_utils.el | 45 ++++++++++++++ nvim/lua/custom/plugins/harpoon.lua | 44 +++++++++++++ 13 files changed, 417 insertions(+) create mode 100644 .emacs create mode 100644 emacs/_bindings.el create mode 100644 emacs/external_packages.el create mode 100644 emacs/kts_letter.el create mode 100644 emacs/kts_letter.elc create mode 100644 emacs/kts_old.el create mode 100644 emacs/lsp.el create mode 100644 emacs/native_comp.el create mode 100644 emacs/old/dired_view_mode.el create mode 100644 emacs/old/rust_docs.el create mode 100644 emacs/old/ssh.el create mode 100644 emacs/random_utils.el create mode 100644 nvim/lua/custom/plugins/harpoon.lua diff --git a/.emacs b/.emacs new file mode 100644 index 0000000..13cf80f --- /dev/null +++ b/.emacs @@ -0,0 +1,39 @@ +;; -*- lexical-binding: t; -*- +(setq native-comp-jit-compilation nil) ;; is enabled again in external_packages.el + +(tool-bar-mode -1) +(menu-bar-mode) +(scroll-bar-mode -1) +(fringe-mode -1) +(desktop-save-mode 1) +(electric-pair-mode 1) +(desktop-file-name ".emacs.desktop" "~/.emacs.d/") +(setq dired-listing-switches "-alh") +(setq inhibit-startup-screen t) +(setq display-line-numbers-type 'relative) +(global-display-line-numbers-mode t) +(setq create-lockfiles nil) +(setq make-backup-files nil) +(setq backup-directory-alist '(("" . "~/.emacs.d/backups"))) +(setq custom-file "~/.emacs.custom") +(load-file "~/.emacs.custom") +(add-to-list 'default-frame-alist '(font . "Iosevka-20")) +(set-face-attribute 'default nil :font "Iosevka-20") +;; PACKAGES +(load "~/emacs/external_packages.el") +;; OTHER FILES +(load "~/emacs/kts_letter") +(load "~/emacs/random_utils") +(load "~/emacs/_bindings") +(load "~/emacs/lsp") +(load "~/emacs/native_comp") + +(put 'dired-find-alternate-file 'disabled nil) ; a key in dired + + +;; BUILD GUIDE FOR FUTURE GENERATIONS +;; download autoconfigure shits dependency and run that then run the cofigure +;; configure flags: --with-ns --with-native-compilation --with-tree-sitter --with-json --with-gnutls +;; Emacs native compilation depends on libgccjit which is not exposed by default to .app's by default. which requires you to expose the path of the libgccjit to emacs. I have downloaded libgccjit with brew and binaries is in the homebrew/bin. +;; Interestingly emacs does not require gcc (which is not accesibly to emacs by default) itself. Only exposing the libgccjit is seems to be enough +;; DEPENDENCIES: gcc and libgccjit (for native compilation), gdu (for dired-du), diff --git a/emacs/_bindings.el b/emacs/_bindings.el new file mode 100644 index 0000000..812a91a --- /dev/null +++ b/emacs/_bindings.el @@ -0,0 +1,25 @@ +;; search and replace -*- lexical-binding: t; -*- +(global-set-key (kbd "C-c C-s") #'query-replace-regexp) +(global-set-key (kbd "C-C C-n") #'eval-buffer) +(global-set-key (kbd "C-c k") #'desktop-clear) +(global-set-key (kbd "C-x C-b") #'ibuffer) +(global-set-key (kbd "C-x b") #'consult-buffer) +(global-set-key (kbd "C-c C-w") #'kill-ring-save) +(global-set-key (kbd "C-c C-y") #'yank-pop) +(global-set-key (kbd "C-=") #'eval-expression) + + +(defun duplicate-line () + "Duplicate Line" + (interactive) + (let ((col (current-column))) + (save-excursion + (move-beginning-of-line 1) + (kill-line) + (yank) + (open-line 1) + (forward-line 1) + (yank)) + (move-to-column col))) + +(global-set-key (kbd "C-,") 'duplicate-line) diff --git a/emacs/external_packages.el b/emacs/external_packages.el new file mode 100644 index 0000000..e0417de --- /dev/null +++ b/emacs/external_packages.el @@ -0,0 +1,92 @@ +;; -*- lexical-binding: t; -*- +(require 'package) +(setq package-archives + '(("melpa" . "https://melpa.org/packages/") + ("gnu" . "https://elpa.gnu.org/packages/"))) +(package-initialize) +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) +(require 'use-package) +(setq use-package-always-ensure t) + + +;; MAC ENV VARIABLE FIX +(use-package exec-path-from-shell + :ensure t + :if (memq window-system '(mac ns x)) + :config + (exec-path-from-shell-initialize) + (setq native-comp-jit-compilation t)) + +(use-package gruber-darker-theme) +(load-theme 'gruber-darker) + +(use-package snow + :defer t) +(use-package fireplace + :defer t) +(use-package rust-mode + :defer t) +(use-package go-mode + :defer t) +(add-hook 'go-mode-hook + (lambda () + (setq tab-width 4) ;; Tab karakterinin genişliği + (setq indent-tabs-mode t) ;; Tab kullan + )) +(use-package avy + :ensure t + :config + (global-set-key (kbd "C-'") 'avy-goto-char)) + +(use-package magit + :ensure t + :defer t) + +(use-package dired-du + :defer t + :config + (when (eq system-type 'darwin) + (setq dired-du-used-space-program '("gdu" "-sb")) + ) + (setq dired-du-size-format t) + ) + +(use-package vertico + :ensure t + :config + (vertico-mode) + ) + +(use-package marginalia + :ensure t + :config + (marginalia-mode)) + +(use-package consult + :defer t + :ensure t) + +(use-package multiple-cursors + :defer t + :ensure t + :bind (("C-S-c C-S-c" . mc/edit-lines) + ("C->" . mc/mark-next-like-this) + ("C-<" . mc/mark-previous-like-this) + ("C-c C-<" . mc/mark-all-like-this))) + +(add-hook 'c++-mode-hook + (lambda () + (setq indent-tabs-mode nil) + (setq c-basic-offset 4) + (setq tab-width 4))) + +;; alterantive "PATH" environment variable in case of an problem +;; (add-to-list 'exec-path "/opt/homebrew/bin") +;; (setenv "PATH" (concat "/opt/homebrew/bin:" (getenv "PATH"))) + +;; (let ((my-lib-path "/opt/homebrew/lib/gcc/15/libgccjit.dylib")) +;; (if (and (file-exists-p my-lib-path) (executable-find "gcc-15")) +;; (setq native-comp-jit-compilation t) +;; (setq native-comp-jit-compilation nil))) diff --git a/emacs/kts_letter.el b/emacs/kts_letter.el new file mode 100644 index 0000000..6a95add --- /dev/null +++ b/emacs/kts_letter.el @@ -0,0 +1,43 @@ +;; -*- lexical-binding: t; -*- +(setq kelimeler '("İstese " "aşkına " "köle " "olurum\n" "Tek " "sözüne " "kendimi " "avuturum\n" "Ama " "yok, " "inatla " "dönüyoruz " "en " "başına\n\n" "Hiç " "elimde " "yok " "hiç " "elimde " "yok " "bi " "çare\n" "Kaçamam " "olmuyo, " "bu " "kalp " "yerinde " "durmuyo\n" "Sardın " "mı " "en " "başa? " "Düşmem " "o " "tuzağa\n" "İstiyorum " "ol " "Bonnie " "and " "Clyde, " "kaçalım " "burdan\n\n" "Aşkın " "yaktı " "beni " "ya\n" "Söndürsene " "o " "zaman\n" "Düştüm " "yoluna " "bul " "beni " "şimdi " "orda\n" "Sorma " "ne " "hâldeyim, " "biter " "mi? " "Korkma\n" "İşte " "burda " "kalbimin " "tek " "sahibi.")) + +(setq kts-full-text (apply 'concat kelimeler)) +(setq kts-index 0) + +(defun kts-space-insert () + (interactive) + (if (>= kts-index (length kts-full-text)) + (progn + (setq kts-index 0) + (kts-mode -1)) + (insert (substring kts-full-text kts-index (1+ kts-index))) + (setq kts-index (1+ kts-index)))) + +(defun kts-index-reset () + (interactive) + (setq kts-index 0)) + +(defvar kts-mode-map + (let ((map (make-sparse-keymap))) + (dotimes (i 26) + (define-key map (kbd (char-to-string (+ ?a i))) 'kts-space-insert) + (define-key map (kbd (char-to-string (+ ?A i))) 'kts-space-insert)) + (dotimes (i 10) + (define-key map (kbd (char-to-string (+ ?0 i))) 'kts-space-insert)) + (define-key map (kbd "SPC") 'kts-space-insert) + (define-key map (kbd ".") 'kts-space-insert) + (define-key map (kbd ",") 'kts-space-insert) + (define-key map (kbd ";") 'kts-space-insert) + (define-key map (kbd "[") 'kts-space-insert) + (define-key map (kbd "]") 'kts-space-insert) + (define-key map (kbd "\\") 'kts-space-insert) + (define-key map (kbd "=") 'kts-space-insert) + (define-key map (kbd "-") 'kts-space-insert) + map) + "Keymap for kts-mode") + +(define-minor-mode kts-mode + "Output the lyrics of the favorite song of Hilmi Yavuzhan" + :lighter " KTS" + :keymap kts-mode-map) + diff --git a/emacs/kts_letter.elc b/emacs/kts_letter.elc new file mode 100644 index 0000000000000000000000000000000000000000..46423284d8a96c14ce8a4fa02ebd8b28e7c764f1 GIT binary patch literal 3521 zcmZ`+-*el>5$2=BOfpH6hcva*H5o@@M_@oeB$Ftf#Bn@v#~G)s)#+pmr8*J^>4pG~ z1rCa-O#c?m^d+zHi=XsH`Ty#-3;r;r#AASm-Mihry>Gug9X$N*!H11Tqj_*}Ko4v- zHK~r}!{qcZQ{$4(bWs|cQ|NaC(fnlGDXBCiJ9Q>A=gL7{cANOOJDNG|jcu%{6@`BI zHeUO9`dd-!9sCadAcDXjw&>YJrzX>>E@Fs^j&kwy$jpBcC8FnjQVVwY=k)g!BZ*-Ciz>8Oc&sqa zRK|;JnpHC^VT>vkOjJ4*qq^WE@G!0lo+N9Zsv<@(EY7Z8@XtC(^(B9QGrxRwk?Gnx z3tV-st}YNh#+*;X`&&3?{ns|njW|+y%z_8$EY=dzgdm1mkKET@S>HL3btY;>xvuGR;1p}FpbUe1jBwKF&)rFId%2s$1vONMqB%f{pAa!a+ zrrYX}noiRhjcq<&yddRq>ydGj8c7o^VMliD4 zD^M=0Sm3z#+fJ~ZU~Q`XRnViydX}jvCAKa|cKK)7@R?dmJf3o`%m?&791Wwe=l}78 z?I`~jZ~v3V_Maf>ZQ&K*3E#kLKZ@?$!Ee9K3BX`eJy@wbtlyRdy#s5(R^u<2EiP`| zj*>UU#oroHa>Ga9ZyJdbvGN{U>5CQi8T7745pa+jaRoTHYZ7qTHA(-5WN<^mVQ*Lt zdFz{!bv#?xyC8xy-R|9Me?GQV&Y*4w_^75+U3epiVlvbYU)S$n(`Ra;8KbB`Z&IIb zFd&}*Vv~!ACZm|fr>gLr^-2fIIib&n0=W%r5Bk*eY5!BM8ESR$?BO}U^9;`so+!fW z9v-iCM8gj4wm+gS7KMXOr~TEZeR^VZkFjeKdVKhl1kt7>ovRUgPPh3_(7ZdWAjs68aA=F$cGr&wUI&*HHly!MIo$}1?Xt=H|M-@DAJ;MOU|SF6FxZxa{Msa(+#cD? zIHzL_iaICDuqm&ykuG52n`_}T*M8J0>g9B#mrquYC-l>)hS#Fr#wye7WdRT*T9o6e zC^%`ODoJ#)*VJb!trSj>GrL5_Yv4gX4x!;a@04_E(W_x}ad;z(s|;M%rt7?{J#ywn zS?7L{X+X6Z{k#Mx^WlGiLn*bTd#?`8OD+7=oq}!OU~F;NezyBD-=u7gxxhq6u1fx5foa=|&bi#nO+=GHQ zqSm|U-wPSOzkU}gA+=ik1y3EYp?f?UMy;BsL8_oku{MUn?-LvOdjm`=<1pZFRt3Q= zyx=W>*`QyW{gD-7_TM}jM#)D)@SP|OeUdrc0)^~SRXQ)zWvNi^NXNSUNj5zxL*a#z z>ijMcv0Ah!!JcpdfWlNc1?Q#zp`yw?hCsQpDxd2waFjq~b-Xr7YDtY4wCLB$-J7C1 zXJABNa}$>>T5h3rx1_sLqVe4l^tdDi3^m`#fT|YvT-+lV4qnR4Tuoy@`iKTg8XXRp zQd3hp+C@bzw_G!c$7$MKj8TcWIgULp3y^7DE#7)!hj!`&bvlbH#729U-J{rn)y=y+ z8k8SA!7=Yg2}6JZB{KZ(FWUJ^h_2`lt_!7mKUj5s;7jfWd_e$qd%e3bzPt%ZD!2iz z4nhK36dZ>Q zrKw6mu-p{D4of%86uDhM2uqGt919wDNL9{e@XoN9(Fk`hv@fRkFJ^-dDK*;D92u*+HlIfAZ}-{{R30 literal 0 HcmV?d00001 diff --git a/emacs/kts_old.el b/emacs/kts_old.el new file mode 100644 index 0000000..0b14b27 --- /dev/null +++ b/emacs/kts_old.el @@ -0,0 +1,49 @@ +;; -*- lexical-binding: t; -*- +(setq kelimeler '("istese" "aşkına" "köle" "olurum" "tek" "sözüne" "kendimi" "avuturum" "ama" "yok" "inatla" "dönüyoruz" "en" "başına" "hiç" "elimde" "yok" "hiç" "elimde" "yok" "bi" "çare" "kaçamam" "olmuyo" "bu" "kalp" "yerinde" "durmuyo" "sardın" "mı" "en" "başa" "düşmem" "o" "tuzağa" "istiyorum" "ol" "bonnie" "me" "clyde" "kaçalım" "burdan" "aşkın" "yaktı" "beni" "ya" "söndürsene" "o" "zaman" "düştüm" "yoluna" "bul" "beni" "şimdi" "orda" "sorma" "ne" "hâldeyim" "biter" "mi" "korkma" "işte" "burda" "kalbimin" "tek" "sahibi")) + +(setq kts-index 0) +(defun kts-space-insert () + (interactive) + (when (>= kts-index (length kelimeler)) + (setq kts-index 0)) + (insert (nth kts-index kelimeler)) + (insert " ") + (setq kts-index (+ kts-index 1)) + ) + +(defun kts-index-reset () + (interactive) + (setq kts-index 0)) + +;(defvar loremipsum-map +; (let ((map (make-sparse-keymap))) +; (define-key map (kbd "SPC") 'kts-space-insert) +; map) +; "Keymap for my-special-mode") + +(defvar kts-mode-map + (let ((map (make-sparse-keymap))) + ;; Sadece harf, rakam ve bazı karakterler + (dotimes (i 26) + (define-key map (kbd (char-to-string (+ ?a i))) 'kts-space-insert) + (define-key map (kbd (char-to-string (+ ?A i))) 'kts-space-insert)) + (dotimes (i 10) + (define-key map (kbd (char-to-string (+ ?0 i))) 'kts-space-insert)) + (define-key map (kbd "SPC") 'kts-space-insert) + (define-key map (kbd ".") 'kts-space-insert) + (define-key map (kbd ",") 'kts-space-insert) + (define-key map (kbd ";") 'kts-space-insert) + (define-key map (kbd "[") 'kts-space-insert) + (define-key map (kbd "]") 'kts-space-insert) + (define-key map (kbd "\\") 'kts-space-insert) + (define-key map (kbd "=") 'kts-space-insert) + (define-key map (kbd "-") 'kts-space-insert) + map) + "Keymap for kts-mode") + + +(define-minor-mode kts-mode + "Space tuşuna özel fonksiyon çalıştıran mode." + :lighter " MyMode" + :keymap kts-mode-map + ) diff --git a/emacs/lsp.el b/emacs/lsp.el new file mode 100644 index 0000000..de8d559 --- /dev/null +++ b/emacs/lsp.el @@ -0,0 +1,49 @@ +;; -*- lexical-binding: t; -*- +(setq lsp-completion-provider :capf) +(use-package lsp-mode + :defer t + :ensure t + :config + (setq lsp-enable-on-type-formatting nil) + (setq lsp-auto-start nil) + (setq lsp-headerline-breadcrumb-enable nil) + (setq lsp-signature-auto-activate nil) + ) +(use-package lsp-treemacs + :defer t + :ensure t) + +;; (use-package corfu +;; :custom +;; (corfu-cycle t) +;; (corfu-auto t) +;; (corfu-quit-no-match 'separator) +;; (corfu-preselect 'prompt) +;; :bind +;; (:map corfu-map +;; ("TAB" . corfu-next) +;; ("S-TAB" . corfu-previous))) + +(use-package company + :ensure t + :defer t + :custom + (company-minimum-prefix-length 1) + (company-idle-delay 0.0) + :init + (global-company-mode) + :config + (setq company-tooltip-align-annotations t)) + +;;(use-package dap-mode +;; :after lsp-mode +;; :config +;; (dap-ui-controls-mode -1) +;; (dap-tooltip-mode -1) +;; (dap-auto-configure-mode) +;; (require 'dap-gdb)) + +;;(add-hook 'c-mode-hook 'lsp) +;;(add-hook 'rust-mode-hook 'lsp) +;;(with-eval-after-load 'lsp-mode +;; (add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration)) diff --git a/emacs/native_comp.el b/emacs/native_comp.el new file mode 100644 index 0000000..a257c17 --- /dev/null +++ b/emacs/native_comp.el @@ -0,0 +1,4 @@ +;; -*- lexical-binding: t; -*- +(setq native-comp-async-jobs-number 0) ;; half of the core +(add-to-list 'load-path "~/Documents/Programming/ELisp/") +(setq native-comp-async-report-warnings-errors 'silent) diff --git a/emacs/old/dired_view_mode.el b/emacs/old/dired_view_mode.el new file mode 100644 index 0000000..6aed0c8 --- /dev/null +++ b/emacs/old/dired_view_mode.el @@ -0,0 +1,7 @@ +(defun dired-view-file-read-only () + "View file in dired-mode with V" + (interactive) + (let ((find-file-run-dired t)) + (view-file (dired-get-file-for-visit)))) +(with-eval-after-load 'dired + (define-key dired-mode-map (kbd "V") #'dired-view-file-read-only)) diff --git a/emacs/old/rust_docs.el b/emacs/old/rust_docs.el new file mode 100644 index 0000000..de232aa --- /dev/null +++ b/emacs/old/rust_docs.el @@ -0,0 +1,6 @@ +(defun rdocs (topic) + "Searches the word in local rust docs (rustup docs)" + (interactive "sRustup doc (default std): ") + (let ((final-topic (if (string-empty-p topic) "--std" topic))) + (message "Loading: %s" final-topic) + (shell-command (concat "rustup doc " final-topic)))) diff --git a/emacs/old/ssh.el b/emacs/old/ssh.el new file mode 100644 index 0000000..b97c1c6 --- /dev/null +++ b/emacs/old/ssh.el @@ -0,0 +1,14 @@ +(defun ssh () + "Connect to the server with TRAMP" + (interactive) + (let ((host (read-string "SSH to (user@host or name): "))) + (if (string-empty-p host) + (message "No host provided") + (find-file (concat "/ssh:" host ":/home"))))) + + +(defun ssh-close () + "Close all SSH connections" + (interactive) + (tramp-cleanup-all-connections) + (message "TRAMP/SSH buffers are cleaned up.")) diff --git a/emacs/random_utils.el b/emacs/random_utils.el new file mode 100644 index 0000000..c05265f --- /dev/null +++ b/emacs/random_utils.el @@ -0,0 +1,45 @@ +;; -*- lexical-binding: t; no-byte-compile: t -*- +(defun es () + "Opens Eshell on another window" + (interactive) + (let ((w (selected-window))) + (let ((w2 (split-window w 20))) + (select-window w2) + (eshell) + ))) + +(defun dired-view-file-read-only () + "View file in dired-mode with V" + (interactive) + (let ((find-file-run-dired t)) + (view-file (dired-get-file-for-visit)))) +(with-eval-after-load 'dired + (define-key dired-mode-map (kbd "V") #'dired-view-file-read-only)) + +(defun rdocs (topic) + "Searches the word in local rust docs (rustup docs)" + (interactive "sRustup doc (default std): ") + (let ((final-topic (if (string-empty-p topic) "--std" topic))) + (message "Loading: %s" final-topic) + (shell-command (concat "rustup doc " final-topic)))) + +(defun ssh () + "Connect to the server with TRAMP" + (interactive) + (let ((host (read-string "SSH to (user@host or name): "))) + (if (string-empty-p host) + (message "No host provided") + (find-file (concat "/ssh:" host ":/home"))))) + + +(defun ssh-close () + "Close all SSH connections" + (interactive) + (tramp-cleanup-all-connections) + (message "TRAMP/SSH buffers are cleaned up.")) + +(defun lsp-kill () + "Disconnects from LSP server and closes Flymake" + (interactive) + (lsp-disconnect) + (flymake-mode -1)) diff --git a/nvim/lua/custom/plugins/harpoon.lua b/nvim/lua/custom/plugins/harpoon.lua new file mode 100644 index 0000000..b64412f --- /dev/null +++ b/nvim/lua/custom/plugins/harpoon.lua @@ -0,0 +1,44 @@ +return { + "ThePrimeagen/harpoon", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local harpoon_mark = require("harpoon.mark") + local harpoon_ui = require("harpoon.ui") + local harpoon_term = require("harpoon.term") + + require("harpoon").setup({ + menu = { + width = vim.api.nvim_win_get_width(0) - 20, + }, + }) + + local keymap = vim.keymap.set + local opts = { noremap = true, silent = true } + + -- Dosya ekle + keymap("n", "a", harpoon_mark.add_file, opts) + -- Menü aç + keymap("n", "h", harpoon_ui.toggle_quick_menu, opts) + + -- Hızlı geçiş tuşları + keymap("n", "1", function() + harpoon_ui.nav_file(1) + end, opts) + keymap("n", "2", function() + harpoon_ui.nav_file(2) + end, opts) + keymap("n", "3", function() + harpoon_ui.nav_file(3) + end, opts) + keymap("n", "4", function() + harpoon_ui.nav_file(4) + end, opts) + keymap("n", "ta", function() + harpoon_term.gotoTerminal(1) -- navigates to term 1 + end, opts) + + -- Harpoon listesi içinde ileri / geri + keymap("n", "j", harpoon_ui.nav_next, opts) -- sonraki + keymap("n", "k", harpoon_ui.nav_prev, opts) -- önceki + end, +} -- 2.43.0