;;; init-nlinum.el --- .Emacs Configuration -*- lexical-binding: t -*- ;;; Commentary: ;; ;;; Code: ;;---------------------------------------------------------------------------- ;; Line numbers ;;---------------------------------------------------------------------------- ;; Linum snippets from: https://www.emacswiki.org/emacs/LineNumbers (use-package nlinum :config (add-hook 'find-file-hook (lambda () (linum-mode 1))) (setq global-linum-mode t) ) (use-package linum :config (linum-mode 1) :hook (apache-mode . linum-mode) (c-mode . linum-mode) (c++-mode . linum-mode) (elisp-mode . linum-mode) (html-mode . linum-mode) (js-mode . linum-mode) (less-mode . linum-mode) (markdown-mode . linum-mode) (nginx-mode . linum-mode) (php-mode . linum-mode) (scss-mode . linum-mode) (sass-mode . linum-mode) (web-mode . linum-mode)) (defun my-linum-get-format-string () "Format the string of the column in the buffer. It helps to show the numbering plus a separation bar." (let* ((width (1+ (length (number-to-string (count-lines (point-min) (point-max)))))) (format (concat "%" (number-to-string width) "d \u2502"))) (setq my-linum-format-string format))) (add-hook 'linum-before-numbering-hook 'my-linum-get-format-string) (defvar my-linum-current-line-number 0) (defun my-linum-format (line-number) "Defines LINE-NUMBER the numbering format of each. this helps maintain the format in the numbering" (propertize (format my-linum-format-string line-number) 'face (if (eq line-number my-linum-current-line-number) 'my-linum-hl 'linum))) (setq linum-format 'my-linum-format) (defadvice linum-update (around my-linum-update) "Defines LINUM-UPDATE for update lines. this helps maintain the format in the numbering" (let ((my-linum-current-line-number (line-number-at-pos))) ad-do-it)) (ad-activate 'linum-update) (defvar *linum-mdown-line* nil) (defun line-at-click () "Funtions for position lines. this helps maintain the move visual." (save-excursion (let ((click-y (cdr (cdr (mouse-position)))) (line-move-visual-store line-move-visual)) (setq line-move-visual t) (goto-char (window-start)) (with-no-warnings (next-line (1- click-y))) (setq line-move-visual line-move-visual-store) ;; If you are using tabbar substitute the next line with ;; (line-number-at-pos)))) (1+ (line-number-at-pos))))) (defun md-select-linum () "Funtions for position lines. this helps maintain the move visual." (interactive) (with-no-warnings (goto-line (line-at-click))) (set-mark (point)) (setq *linum-mdown-line* (line-number-at-pos))) (defun mu-select-linum () "Funtions for position lines. this helps maintain the move visual." (interactive) (when *linum-mdown-line* (let (mu-line) ;; (goto-line (line-at-click)) (setq mu-line (line-at-click)) (with-no-warnings (goto-line (max *linum-mdown-line* mu-line))) (set-mark (line-end-position)) (with-no-warnings (goto-line (min *linum-mdown-line* mu-line))) (setq *linum-mdown* nil)))) (global-set-key (kbd " ") 'md-select-linum) (global-set-key (kbd " ") 'mu-select-linum) (global-set-key (kbd " ") 'mu-select-linum) (provide 'init-nlinum) ;; Local Variables: ;; byte-compile-warnings: (not free-vars) ;; End: ;;; init-nlinum.el ends here