இந்த சிக்கல் தொடர்கின்றதா?
vanakkam brother
ippo ayan brother config.org load pannan
indha maari varudu bro na denote code lam comment panitava?
config.org file
#+title: My Configuration
#+author: Thanga Ayyanar
#+startup: overview
- User Interface
** Hide menubar
#+begin_src emacs-lisp
(menu-bar-mode 0)
#+end_src
** Hide toolbar and scrollbar
#+begin_src emacs-lisp
;(when (display-graphic-p)
(tool-bar-mode 0)
(scroll-bar-mode 0)
#+end_src
** No inhibit startup message
#+begin_src emacs-lisp
(setq inhibit-startup-screen t)
#+end_src
** Set number
#+begin_src emacs-lisp
(column-number-mode)
(global-display-line-numbers-mode t)
#+end_src
** Theme
#+begin_src emacs-lisp
(use-package ef-themes
:config
(load-theme 'ef-dark t))
#+end_src
** Font configuration
#+begin_src emacs-lisp
(set-face-attribute 'default nil :font “Liberation Mono” :height 200)
#+end_src - Behavior
** No (backup, Lock, autosave)
#+begin_src emacs-lisp
;; No autoback up and lock files
(setq
make-backup-files nil
auto-save-default nil
create-lockfiles nil)
#+end_src
** Y or N instead of Yes or No
#+begin_src emacs-lisp
(fset 'yes-or-no-p 'y-or-n-p)
#+end_src
** Electric auto pair mode
#+begin_src emacs-lisp
(electric-pair-mode 1)
#+end_src
** Turn off blinking cursor
#+begin_src emacs-lisp
;(blink-cursor-mode -1)
#+end_src
** Vertical bar
#+begin_src emacs-lisp
(setq-default cursor-type 'bar)
#+end_src
** Auto revert
-
Auto revert Files
#+begin_src elisp
(global-auto-revert-mode 1)
#+end_src -
Auto revert Directory
#+begin_src elisp
(setq global-auto-revert-non-file-buffers t)
#+end_src -
Auto revert issues i faced
#+begin_src elisp
(add-to-list 'global-auto-revert-ignore-modes 'Buffer-menu-mode)
#+end_src
** Registers
#+begin_src elisp
;; Registers
(set-register ?I '(file . “/home/linux/.emacs.d/config.org”)) ;; C-x r j E
(set-register ?T '(file . “/home/linux/.config/i3/config”)) ;; C-x r j T
#+end_src
** Buffers
*** Buffer switching
#+begin_src elisp
(global-set-key [(meta shift j)] 'previous-buffer)
(global-set-key [(meta shift l)] 'next-buffer)
#+end_src
*** Buffer kill
#+begin_src elisp
(global-set-key (kbd “C-x K”) 'kill-this-buffer)
#+end_src
*** iBuffer
#+begin_src elisp
(global-set-key (kbd “C-x C-b”) 'ibuffer); Ibuffer options
(setq ibuffer-saved-filter-groups
(quote ((“default”
(“dired” (mode . dired-mode))
(“org” (name . “^.*org$”))
;; (“web” (or (mode . web-mode) (mode . js2-mode)))
(“shell” (or (mode . eshell-mode) (mode . shell-mode)))
;; (“mu4e” (name . “*mu4e*”))
;; (“programming” (or
;; (mode . python-mode)
;; (mode . c+±mode)))
(“emacs” (or
(name . “^\scratch\$”)
(name . “^\Messages\$”)))
))))
(add-hook 'ibuffer-mode-hook
(lambda ()
(ibuffer-auto-mode 1)
(ibuffer-switch-to-saved-filter-groups “default”)))
;; Don’t show filter groups if there are no buffers in that group
(setq ibuffer-show-empty-filter-groups nil)
;; Don’t ask for confirmation to delete marked buffers
(setq ibuffer-expert t)
#+end_src
- Use package
** Installation
#+begin_src emacs-lisp
(require 'package)
(setq package-archives '((“melpa” . “Package Listing”)
(“org” . “https://orgmode.org/elpa/”)
(“elpa” . “GNU ELPA Packages”)))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
;; Initialize use package on non-linux based system
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
#+end_src
-
Third party packages
** Which Key
#+begin_src emacs-lisp
(use-package which-key
:init (which-key-mode)
:diminish which-key-mode
:config
(setq which-key-idle-delay 0.3))
#+end_src
** Helpful
#+begin_src emacs-lisp
(use-package helpful
:commands (helpful-callable helpful-variable helpful-command helpful-key)
:bind
([remap describe-function] . helpful-callable)
([remap describe-command] . helpful-command)
([remap describe-variable] . helpful-variable)
([remap describe-key] . helpful-key))
#+end_src
** DooM modeline
#+begin_src emacs-lisp
(use-package doom-modeline
:init (doom-modeline-mode 1))
#+end_src
** Nerd icons
#+begin_src emacs-lisp
(use-package nerd-icons
;; :custom
;; The Nerd Font you want to use in GUI
;; “Symbols Nerd Font Mono” is the default and is recommended
;; but you can use any other Nerd Font if you want
;; (nerd-icons-font-family “Symbols Nerd Font Mono”)
)
#+end_src
** Doom themes
#+begin_src emacs-lisp
(use-package doom-themes
:config
;; Global settings (defaults)
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
(load-theme 'doom-one t);; Enable custom neotree theme (all-the-icons must be installed!)
;;(doom-themes-neotree-config)
;; or for treemacs users
;;(setq doom-themes-treemacs-theme “doom-atom”) ; use “doom-colors” for less minimal icon theme
;;(doom-themes-treemacs-config)
;; Corrects (and improves) org-mode’s native fontification.
(doom-themes-org-config))
#+end_src
** Completion
#+begin_src emacs-lisp
;; Enable vertico
(use-package vertico
:init
(vertico-mode);; Different scroll margin
;; (setq vertico-scroll-margin 0);; Show more candidates
;; (setq vertico-count 20);; Grow and shrink the Vertico minibuffer
;; (setq vertico-resize t);; Optionally enable cycling for
vertico-next' and
vertico-previous’.
(setq vertico-cycle t)
);; Persist history over Emacs restarts. Vertico sorts by history position.
(use-package savehist
:init
(savehist-mode));; Optionally use the `orderless’ completion style.
(use-package orderless
:init
;; Configure a custom style dispatcher (see the Consult wiki)
;; (setq orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch)
;; orderless-component-separator #'orderless-escapable-split-on-space)
(setq completion-styles '(orderless basic)
completion-category-defaults nil
completion-category-overrides '((file (styles partial-completion)))));; Enable rich annotations using the Marginalia package
(use-package marginalia
;; Bindmarginalia-cycle' locally in the minibuffer. To make the binding ;; available in the *Completions* buffer, add it to the ;;
completion-list-mode-map’.
:bind (:map minibuffer-local-map
(“M-A” . marginalia-cycle));; The :init section is always executed.
:init;; Marginalia must be activated in the :init section of use-package such that
;; the mode gets enabled right away. Note that this forces loading the
;; package.
(marginalia-mode))
#+end_src
** Rainbow delimters
#+begin_src emacs-lisp
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
#+end_src
** consult
#+begin_src emacs-lisp
;; Example configuration for Consult
(use-package consult
;; Replace bindings. Lazily loaded due by use-package'. :bind (;; C-c bindings in
mode-specific-map’
(“C-c M-x” . consult-mode-command)
(“C-c h” . consult-history)
(“C-c k” . consult-kmacro)
(“C-c m” . consult-man)
(“C-c i” . consult-info)
([remap Info-search] . consult-info)
;; C-x bindings in ctl-x-map' ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command ("C-x b" . consult-buffer) ;; orig. switch-to-buffer ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer ;; Custom M-# bindings for fast register access ("M-#" . consult-register-load) ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) ("C-M-#" . consult-register) ;; Other custom bindings ("M-y" . consult-yank-pop) ;; orig. yank-pop ;; M-g bindings in
goto-map’
(“M-g e” . consult-compile-error)
(“M-g f” . consult-flymake) ;; Alternative: consult-flycheck
(“M-g g” . consult-goto-line) ;; orig. goto-line
(“M-g M-g” . consult-goto-line) ;; orig. goto-line
(“M-g o” . consult-outline) ;; Alternative: consult-org-heading
(“M-g m” . consult-mark)
(“M-g k” . consult-global-mark)
(“M-g i” . consult-imenu)
(“M-g I” . consult-imenu-multi)
;; M-s bindings in `search-map’
(“M-s d” . consult-find)
(“M-s D” . consult-locate)
(“M-s g” . consult-grep)
(“M-s G” . consult-git-grep)
(“M-s r” . consult-ripgrep)
(“M-s l” . consult-line)
(“M-s L” . consult-line-multi)
(“M-s k” . consult-keep-lines)
(“M-s u” . consult-focus-lines)
;; Isearch integration
(“M-s e” . consult-isearch-history)
:map isearch-mode-map
(“M-e” . consult-isearch-history) ;; orig. isearch-edit-string
(“M-s e” . consult-isearch-history) ;; orig. isearch-edit-string
(“M-s l” . consult-line) ;; needed by consult-line to detect isearch
(“M-s L” . consult-line-multi) ;; needed by consult-line to detect isearch
;; Minibuffer history
:map minibuffer-local-map
(“M-s” . consult-history) ;; orig. next-matching-history-element
(“M-r” . consult-history)) ;; orig. previous-matching-history-element
;; Enable automatic preview at point in the Completions buffer. This is
;; relevant when you use the default completion UI.
:hook (completion-list-mode . consult-preview-at-point-mode)
;; The :init configuration is always executed (Not lazy)
:init
;; Optionally configure the register formatting. This improves the register
;; preview for consult-register',
consult-register-load’,
;; `consult-register-store’ and the Emacs built-ins.
(setq register-preview-delay 0.5
register-preview-function #'consult-register-format)
;; Optionally tweak the register preview window.
;; This adds thin lines, sorting and hides the mode line of the window.
(advice-add #'register-preview :override #'consult-register-window)
;; Use Consult to select xref locations with preview
(setq xref-show-xrefs-function #'consult-xref
xref-show-definitions-function #'consult-xref)
;; Configure other variables and modes in the :config section,
;; after lazily loading the package.
:config
;; Optionally configure preview. The default value
;; is 'any, such that any key triggers the preview.
;; (setq consult-preview-key 'any)
;; (setq consult-preview-key “M-.”)
;; (setq consult-preview-key ‘(“S-” “S-”))
;; For some commands and buffer sources it is useful to configure the
;; :preview-key on a per-command basis using the `consult-customize’ macro.
(consult-customize
consult-theme :preview-key '(:debounce 0.2 any)
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult–source-bookmark consult–source-file-register
consult–source-recent-file consult–source-project-recent-file
;; :preview-key “M-.”
:preview-key '(:debounce 0.4 any))
;; Optionally configure the narrowing key.
;; Both < and C-+ work reasonably well.
(setq consult-narrow-key “<”) ;; “C-+”
;; Optionally make narrowing help available in the minibuffer.
;; You may want to use `embark-prefix-help-command’ or which-key instead.
;; (define-key consult-narrow-map (vconcat consult-narrow-key “?”) #'consult-narrow-help)
;; By default consult-project-function' uses
project-root’ from project.el.
;; Optionally configure a different project root function.
;;;; 1. project.el (the default)
;; (setq consult-project-function #'consult–default-project–function)
;;;; 2. vc.el (vc-root-dir)
;; (setq consult-project-function (lambda () (vc-root-dir)))
;;;; 3. locate-dominating-file
;; (setq consult-project-function (lambda () (locate-dominating-file “.” “.git”)))
;;;; 4. projectile.el (projectile-project-root)
;; (autoload 'projectile-project-root “projectile”)
;; (setq consult-project-function (lambda (_) (projectile-project-root)))
;;;; 5. No project support
;; (setq consult-project-function nil)
)
#+end_src
** Nov - epub reader
#+begin_src emacs-lisp
(use-package visual-fill-column)
(use-package nov
:defer t
:init
(add-to-list 'auto-mode-alist ‘("\.epub\’" . nov-mode))
:config
(setq nov-text-width t)
(setq visual-fill-column-center-text t)
(add-hook 'nov-mode-hook 'visual-line-mode)
(add-hook 'nov-mode-hook 'visual-fill-column-mode)
)
#+end_src
** EMMS - MPV player integration
#+begin_src emacs-lisp
(use-package emms
:config
(emms-all)
(setq emms-player-list '(emms-player-mpv)
emms-info-functions '(emms-info-native)))
#+end_src
** Denote
#+begin_src emacs-lisp
(use-package denote
:custom
(denote-directory “~/Notes”))
#+end_src
- Load Custom Elisp files
** Tell me how much time it takes to load configuration
#+begin_src emacs-lisp
;;(add-hook 'emacs-startup-hook
;; (lambda ()
;; (message “Emacs loaded in %s.”
;; (emacs-init-time))))
#+end_src - Inbuild programs
** Newsticker - RSS feed reader
#+begin_src emacs-lisp
(setq newsticker-url-list `(
(“Kaniyam Foundation” “கணியம்” nil 3600)
(“Julia Evans” “<![CDATA[Julia Evans]]>” nil 3600)
))
#+end_src
Emacs பயன்படுத்துபவர்கள் ஒவ்வோருக்கும் அவர்களுக்கு ஏற்றார்போல் Emacs ஐ வடிவமைக்க முயற்சி செய்வர். அதேபோல் உங்களுக்கு தற்காலிகமாக ஒரு Config தேவைப்பட்டதால் @GoldAyan அவர்கள் உங்களுக்கு அவர் பயன்படுத்தும் Config ஐ கொடுத்துள்ளார். அதை வைத்துக்கொண்டு தங்களுக்கு ஏன்ன வேண்டும் என்பதை நீங்கள்தான் முடிவு செய்து பயன்படுத்திக்கொள்ள வேண்டும்.
முதலில் ஒரு சிரிய Emacs Config கோப்பை தாங்களே உருவாக்கி அதில் ஒரு Emacs பேக்கேஜை use-package
பயன்படுத்தி உங்கள் Emacs ல் அதை பயன்படுத்துமாறு வைத்து முயற்சி செய்யவும். அதில் சிக்கல் ஏற்பட்டால் கூறவும். இப்படி சிரிதாக ஆரம்பித்து படிப்படியாக உங்களுக்கென்ற ஒரு Config ஐ உருவாக்கிக்கொள்ளவும்.
புரிகின்றனர் நன்றி.
நான் என்னுடைய Config File லை உருவாகுகிறேன் எவையனும் சந்தேயங்கள் ஏற்பட்டால் மீண்டும் இங்கே கேட்கிறேன்.
நன்றி நண்பரே