Refactoring and cleanup code

Linum-mode is disabled for default (can be activated with F6 key), and improves the handling of large files.
This commit is contained in:
Jesús
2019-11-06 17:20:55 -05:00
parent 2de9f0c2ef
commit c3a5ae44b0
3 changed files with 56 additions and 159 deletions

52
modules/init-linum.el Normal file
View File

@@ -0,0 +1,52 @@
;;; init-nlinum.el --- .Emacs Configuration -*- lexical-binding: t -*-
;;; Commentary:
;;
;;; Code:
;;----------------------------------------------------------------------------
;; Line numbers
;;----------------------------------------------------------------------------
;; Linum snippets from: https://www.emacswiki.org/emacs/LineNumbers
(use-package linum
:config
(defun my-linum-get-format ()
"Defines LINUM-GET-FORMAT"
(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)
(defun my-linum-format (line-number)
"Defines LINE-FORMAT"
(propertize (format my-linum-format-string line-number) 'face
(if (eq line-number my-current-line)
'my-linum-hl
'linum)))
(setq linum-format 'my-linum-format)
(defadvice linum-update (around my-linum-update)
"Defines LINUM-UPDATE for update lines"
(let ((my-current-line (line-number-at-pos)))
ad-do-it))
(ad-activate 'linum-update)
;; Colors line active
;; set in file init-theme.el
;; fox example:
;; (defface my-linum-hl
;; '((t :background "gray20" :foreground "gold"))
;; "Face for the currently active Line number"
;; :group 'linum)
;; )
:bind
(([f6] . linum-mode)))
(provide 'init-linum)
;; Local Variables:
;; byte-compile-warnings: (not free-vars)
;; End:
;;; init-linum.el ends here

View File

@@ -1,118 +0,0 @@
;;; 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)
(js2-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 "<left-margin> <down-mouse-1>") 'md-select-linum)
(global-set-key (kbd "<left-margin> <mouse-1>") 'mu-select-linum)
(global-set-key (kbd "<left-margin> <drag-mouse-1>") 'mu-select-linum)
(provide 'init-nlinum)
;; Local Variables:
;; byte-compile-warnings: (not free-vars)
;; End:
;;; init-nlinum.el ends here