mirror of
https://codeberg.org/scip/dot-emacs.git
synced 2026-10-08 00:54:18 +02:00
upd to emacs 31
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; If I ever use custom-group to customize a mode, then I create a
|
||||
;; manual config section for it using the values, custom has added
|
||||
;; here. So, in normal times this should be empty, but needs to exist.
|
||||
|
||||
1
init.el
1
init.el
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; ** .emacs config version
|
||||
|
||||
;; My emacs config has a version (consisting of a timestamp with a
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** ANSI-TERM (inferior shells/interpreters and REPLs)
|
||||
|
||||
;; I use ansi term for inferior shells only.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(use-package emms
|
||||
:defer nil
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; ** More scratch space
|
||||
;; *** Text scratch
|
||||
;; Sometimes I need a text mode scratch buffer while scratch is
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; see https://karthinks.com/software/avy-can-do-anything/
|
||||
|
||||
(use-package avy
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** C
|
||||
|
||||
;; doesn't work in emacs 30 anymore
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Cisco Mode
|
||||
|
||||
;; Written by myself many years ago, but I'm still using it daily to
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** IDO mode
|
||||
|
||||
;; There are other completion enhancement packages available like ivy
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** conf-mode
|
||||
|
||||
;; conf-mode annoyingly overwrites the global keybinding C-c C-c with
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Config::General mode
|
||||
;; **** Config and doc
|
||||
;; [[https://github.com/TLINDEN/config-general-mode][config-general-mode]] (also on Melpa).
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(defun tvd/csv-mode-setup ()
|
||||
(csv-align-mode t)
|
||||
(toggle-truncate-lines 1)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; maintain daemon.de hugo website
|
||||
|
||||
;; (require 'subr-x)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(use-package dictcc
|
||||
:config
|
||||
(defalias 'dict 'dictcc))
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Dired
|
||||
|
||||
;; I use dired for two things: from inside magit as a convenient way
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; Display settings
|
||||
|
||||
;; better visibility of cursor in console sessions
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Dumpjump
|
||||
;; https://github.com/jacktasia/dumb-jump/raw/master/dumb-jump.el
|
||||
(use-package dumb-jump
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Ediff Config
|
||||
|
||||
;; Force ediff to use 1 frame (the current) and not open a new frame
|
||||
@@ -36,45 +37,6 @@
|
||||
|
||||
|
||||
|
||||
;; *** Smerge Config
|
||||
|
||||
;; smerge-mode is being issued during editing of conflicts from magit,
|
||||
;; however, I hate its default prefix, but don't have any practical
|
||||
;; prefixes left AND am using it far too rare to deserve its own
|
||||
;; prefix. So just a hydra will do.
|
||||
|
||||
(when (fboundp 'defhydra)
|
||||
(defhydra hydra-smerge (:timeout 30.0 :exit nil)
|
||||
"
|
||||
^Smerge Mode^
|
||||
^^--------------------------------------------------------------
|
||||
_n_: next conflict _u_: keep upper _s_: swap
|
||||
_p_: prev conflict _l_: keep lower _h_: highlight
|
||||
_e_: Ediff _b_: keep base _r_: resolve
|
||||
_q_: quit _RET_: keep hunk@point _R_: revert
|
||||
|
||||
^^--------------------------------------------------------------
|
||||
Reach this hydra with <C-x m>
|
||||
^^--------------------------------------------------------------
|
||||
|
||||
"
|
||||
|
||||
("n" smerge-next nil)
|
||||
("p" smerge-prev nil)
|
||||
("u" smerge-keep-upper nil)
|
||||
("l" smerge-keep-lower nil)
|
||||
("b" smerge-keep-base nil)
|
||||
("RET" smerge-keep-current nil)
|
||||
("h" smerge-refine nil)
|
||||
("s" smerge-swap nil)
|
||||
("r" smerge-resolve nil)
|
||||
("R" undo-tree-undo nil)
|
||||
("e" smerge-ediff nil :color blue)
|
||||
("q" nil nil :color blue))
|
||||
|
||||
(global-set-key (kbd "C-x m") 'hydra-smerge/body)
|
||||
(defalias 'merge 'hydra-smerge/body))
|
||||
|
||||
|
||||
(provide 'init-ediff)
|
||||
;;; init-ediff.el ends here
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** https://github.com/editorconfig/editorconfig-emacs#readme
|
||||
|
||||
(use-package editorconfig
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; setup el-get for non-package modes
|
||||
|
||||
;; This MUST be the first init file to be loaded.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Emacs LISP interactive
|
||||
|
||||
;; General configuration for all things elisp.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
|
||||
(use-package elvish-mode
|
||||
:mode "\\.elv\\'"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** eShell stuff, or if interactive stuff is needed, use ansi-term
|
||||
|
||||
;; I am a hardcore bash user, but from time to time eshell is good
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** EWW browser stuff
|
||||
|
||||
;; Emacs has a builtin browser, which is not too bad.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; FIXME: how to force bash mode?
|
||||
|
||||
(use-package flymake
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Followcursor Mode
|
||||
|
||||
;; [[https://github.com/TLINDEN/followcursor-mode][source on github]]
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; * Productivity Functions
|
||||
;; --------------------------------------------------------------------------------
|
||||
;; ** goto line with tmp line numbers
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; * Global Key Bindings
|
||||
;; --------------------------------------------------------------------------------
|
||||
;; ** c-h != delete
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Go Lang
|
||||
|
||||
(use-package go-mode
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; https://github.com/leoliu/ack-el
|
||||
|
||||
(defun tvd-kill-ack()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Help Mode
|
||||
|
||||
;; I even customize help windows! ... at least a little :)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; Used here and there below, loaded as early as possible
|
||||
(use-package hydra)
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** iBuffer mode
|
||||
|
||||
;; iBuffer is a great interactive buffer management tool included with
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; ** load imenu
|
||||
(require 'imenu)
|
||||
(define-key global-map [C-down-mouse-2] 'imenu)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Highlighting Indentation
|
||||
;; provides: highlight-indentation-mode and highlight-indentation-current-column-mode
|
||||
(use-package highlight-indentation
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** INFO Mode
|
||||
|
||||
(require 'info)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(defun tvd-kill-ro-buffer()
|
||||
(interactive)
|
||||
(when buffer-read-only
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; LSP mode
|
||||
(use-package lsp-mode
|
||||
:config
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
|
||||
(use-package lua-mode
|
||||
:mode "\\.lua\\'"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** MACROs
|
||||
|
||||
;; help: [[https://www.emacswiki.org/emacs/KeyboardMacrosTricks][emacswiki macro tricks]].
|
||||
@@ -138,6 +139,9 @@ last kbd-macro will be executed."
|
||||
(if (not (get-buffer "macros.el"))
|
||||
(find-file tvd-macro-file))
|
||||
(with-current-buffer "macros.el"
|
||||
(goto-char (point-min))
|
||||
(insert ";; -*- lexical-binding: nil; -*-")
|
||||
(newline)
|
||||
(goto-char (point-max))
|
||||
(newline)
|
||||
(insert ";;")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Magit
|
||||
|
||||
(when (fboundp 'defhydra)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; Enable rich annotations using the Marginalia package
|
||||
(use-package marginalia
|
||||
;; Either bind `marginalia-cycle' globally or only in the minibuffer
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Markdown
|
||||
|
||||
;; I rarely use markdown, but sometimes I stumble upon such a file and
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(use-package ement
|
||||
:custom
|
||||
(ement-save-sessions t)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** MMM Mode
|
||||
(use-package mmm-mode
|
||||
:config
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; ** mode-line setup (must be the last mode)
|
||||
|
||||
;; I just append the current version of my emacs config and leave out
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** narrowing (no mode but fits here)
|
||||
|
||||
;; I use narrowing quite frequently, so here are some enhancements.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Novel Mode - Screen Reader
|
||||
|
||||
;; my own emacs screen reader, very handy to read docs on the road.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Occur
|
||||
;; https://oremacs.com/2015/01/26/occur-dwim/
|
||||
;; https://github.com/abo-abo/hydra/wiki/Emacs
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
|
||||
(use-package org-present
|
||||
:config
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** org mode
|
||||
|
||||
;; I use org mode to take notes mostly at work. I also track projects
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** org agenda mode
|
||||
|
||||
;; I use org mode for along time now, primarily at work, but did not
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; https://elpa.gnu.org/packages/orgalist.html
|
||||
(use-package orgalist)
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** org table mode
|
||||
|
||||
;; I'm so used to lovely org mode tables, I need them everywhere!
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** outline mode
|
||||
|
||||
;; I use the very same cycle style as in org mode: when on a heading,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** cperl mode
|
||||
|
||||
;; I am a perl addict. I love it, therefore, emacs must be prepared
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** POD mode
|
||||
|
||||
;; I LOVE POD! POD is the documentation format of perl and there's a
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Printing
|
||||
;; overwrites printing default menu, access via menu File => Print
|
||||
;; or:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Projectile
|
||||
(use-package projectile
|
||||
:defer nil
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(use-package python
|
||||
:mode ("\\.py\\'" . python-mode)
|
||||
:interpreter ("python" . python-mode)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; *** Recent Files
|
||||
|
||||
;; You know the file you edited yesterday had "kri" in its name, but
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** rust mode
|
||||
(use-package rust-mode
|
||||
:config
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** sgml
|
||||
|
||||
;; Used for XML and the likes.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Shell-Script Mode
|
||||
|
||||
;; C-c C-c [un-]comments everywhere, force in shell-script-mode as well
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; *** Smarter M-x Mode (smex)
|
||||
|
||||
;; This is really cool and I don't know how I could ever live without it.
|
||||
@@ -214,7 +215,7 @@ targets."
|
||||
|
||||
:config
|
||||
(when (fboundp 'persp-new)
|
||||
(consult-customize consult--source-buffer :hidden t :default nil)
|
||||
(consult-customize consult-source-buffer :hidden t :default nil)
|
||||
|
||||
(defvar consult--source-perspective
|
||||
(list :name "Perspective"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; I'm trying to migrate to smart-parens, since it supports all of
|
||||
;; paredit but can do more
|
||||
|
||||
|
||||
44
lisp/init-smerge.el
Normal file
44
lisp/init-smerge.el
Normal file
@@ -0,0 +1,44 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
|
||||
;; *** Smerge Config
|
||||
|
||||
;; smerge-mode is being issued during editing of conflicts from magit,
|
||||
;; however, I hate its default prefix, but don't have any practical
|
||||
;; prefixes left AND am using it far too rare to deserve its own
|
||||
;; prefix. So just a hydra will do.
|
||||
|
||||
(when (fboundp 'defhydra)
|
||||
(defhydra hydra-smerge (:exit nil)
|
||||
"
|
||||
^Smerge Mode^
|
||||
^^--------------------------------------------------------------
|
||||
_n_: next conflict _u_: keep upper _s_: swap
|
||||
_p_: prev conflict _l_: keep lower _h_: highlight
|
||||
_e_: Ediff _b_: keep base _r_: resolve
|
||||
_q_: quit _RET_: keep hunk@point _R_: revert
|
||||
|
||||
^^--------------------------------------------------------------
|
||||
Reach this hydra with <C-x m>
|
||||
^^--------------------------------------------------------------
|
||||
|
||||
"
|
||||
|
||||
("n" smerge-next nil)
|
||||
("p" smerge-prev nil)
|
||||
("u" smerge-keep-upper nil)
|
||||
("l" smerge-keep-lower nil)
|
||||
("b" smerge-keep-base nil)
|
||||
("RET" smerge-keep-current nil)
|
||||
("h" smerge-refine nil)
|
||||
("s" smerge-swap nil)
|
||||
("r" smerge-resolve nil)
|
||||
("R" undo-tree-undo nil)
|
||||
("e" smerge-ediff nil :color blue)
|
||||
("q" nil nil :color blue))
|
||||
|
||||
(global-set-key (kbd "C-x m") 'hydra-smerge/body)
|
||||
(defalias 'merge 'hydra-smerge/body))
|
||||
|
||||
|
||||
(provide 'init-smerge)
|
||||
;;; init-smerge.el ends here
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Suggest Mode
|
||||
|
||||
;; [[https://github.com/Wilfred/suggest.el][suggest mode]] is a great
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; Backup Config
|
||||
|
||||
;; I save backup files in a central location below the init dir, that
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Tabulated List Mode
|
||||
;; built-in, used by many interactive major modes
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(message (format "DEBUG: default-text-scale installed: %s" (package-installed-p 'default-text-scale)))
|
||||
(package-install 'default-text-scale)
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; ** Text Manupilation
|
||||
;; *** expand-region
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; ** increase fontsize with ctrl-+ and ctrl--
|
||||
|
||||
;; I use those bindings everywhere (firefox, terminal, etc), and in
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** tramp mode
|
||||
|
||||
;; Edit remote files, one of the best things in emacs. I use it every day heavily.
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; https://codeberg.org/meow_king/typst-ts-mode
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;;; *** highlight todo keywords (such as FIXME)
|
||||
|
||||
;; Absolutely needed!
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** web-mode (JS, HTML, CSS combined)
|
||||
|
||||
;; Web development is shit. Tech involved is a mess, and in most cases
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; NOTDONE
|
||||
;;; ** WINDOW management stuff
|
||||
;; *** resize windows by keyboard
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Eyebrowse Workspaces
|
||||
;; workspace configuration, like desktops. Seems to be a good implementation, w/o save though
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Xmodmap Mode
|
||||
|
||||
;; the shortest mode ever, [[https://www.emacswiki.org/emacs/XModMapMode][via emacswiki]].
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
;; *** Yaml Mode
|
||||
|
||||
(use-package yaml-mode
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
;; -*- lexical-binding: nil; -*-
|
||||
(defun tvd-kill-ro-buffer()
|
||||
(interactive)
|
||||
(when buffer-read-only
|
||||
|
||||
Reference in New Issue
Block a user