diff options
Diffstat (limited to 'elpa/linum-relative-20180124.1047')
3 files changed, 348 insertions, 0 deletions
diff --git a/elpa/linum-relative-20180124.1047/linum-relative-autoloads.el b/elpa/linum-relative-20180124.1047/linum-relative-autoloads.el new file mode 100644 index 0000000..fc8f34f --- /dev/null +++ b/elpa/linum-relative-20180124.1047/linum-relative-autoloads.el @@ -0,0 +1,60 @@ +;;; linum-relative-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "linum-relative" "linum-relative.el" (0 0 0 +;;;;;; 0)) +;;; Generated autoloads from linum-relative.el + +(autoload 'linum-relative-toggle "linum-relative" "\ +Toggle between linum-relative and linum. + +\(fn)" t nil) + +(autoload 'linum-relative-mode "linum-relative" "\ +Display relative line numbers for current buffer. + +\(fn &optional ARG)" t nil) + +(defvar linum-relative-global-mode nil "\ +Non-nil if Linum-Relative-Global mode is enabled. +See the `linum-relative-global-mode' command +for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `linum-relative-global-mode'.") + +(custom-autoload 'linum-relative-global-mode "linum-relative" nil) + +(autoload 'linum-relative-global-mode "linum-relative" "\ +Toggle Linum-Relative mode in all buffers. +With prefix ARG, enable Linum-Relative-Global mode if ARG is positive; +otherwise, disable it. If called from Lisp, enable the mode if +ARG is omitted or nil. + +Linum-Relative mode is enabled in all buffers where +`(lambda nil (unless (linum-relative-in-helm-p) (linum-relative-mode 1)))' would do it. +See `linum-relative-mode' for more information on Linum-Relative mode. + +\(fn &optional ARG)" t nil) + +(autoload 'helm-linum-relative-mode "linum-relative" "\ +Turn on `linum-relative-mode' in helm. + +\(fn &optional ARG)" t nil) + +(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "linum-relative" '("helm--turn-on-linum-relative" "linum-relative"))) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; linum-relative-autoloads.el ends here diff --git a/elpa/linum-relative-20180124.1047/linum-relative-pkg.el b/elpa/linum-relative-20180124.1047/linum-relative-pkg.el new file mode 100644 index 0000000..7703cac --- /dev/null +++ b/elpa/linum-relative-20180124.1047/linum-relative-pkg.el @@ -0,0 +1,2 @@ +;;; -*- no-byte-compile: t -*- +(define-package "linum-relative" "20180124.1047" "display relative line number in emacs." 'nil :commit "c74a6981b688a5e1e6b8e0809363963ff558ce4d" :keywords '("converience") :authors '(("coldnew" . "coldnew.tw@gmail.com")) :maintainer '("coldnew" . "coldnew.tw@gmail.com") :url "http://github.com/coldnew/linum-relative") diff --git a/elpa/linum-relative-20180124.1047/linum-relative.el b/elpa/linum-relative-20180124.1047/linum-relative.el new file mode 100644 index 0000000..581e60c --- /dev/null +++ b/elpa/linum-relative-20180124.1047/linum-relative.el @@ -0,0 +1,286 @@ +;;; linum-relative.el --- display relative line number in emacs. + +;; Copyright (c) 2013 - 2018 Yen-Chin, Lee. +;; +;; Author: coldnew <coldnew.tw@gmail.com> +;; Keywords: converience +;; Package-Version: 20180124.1047 +;; Package-Commit: c74a6981b688a5e1e6b8e0809363963ff558ce4d +;; X-URL: http://github.com/coldnew/linum-relative +;; Version: 0.6 + +;; This file is not part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;;; Commentary: +;; [![MELPA](http://melpa.org/packages/linum-relative-badge.svg)](http://melpa.org/#/linum-relative) +;; [![MELPA Stable](http://stable.melpa.org/packages/linum-relative-badge.svg)](http://stable.melpa.org/#/linum-relative) + +;; ![Screenshot](https://github.com/coldnew/linum-relative/raw/master/screenshot/screenshot1.jpg) +;; +;; linum-relative lets you display relative line numbers for current buffer. +;; + +;;; Installation: + +;; If you have `melpa` and `emacs24` installed, simply type: +;; +;; M-x package-install linum-relative +;; +;; And add the following to your .emacs +;; +;; (require 'linum-relative) + +;;; Setup & Tips: + +;; The non-interactive function *linum-on* (which should already be built into recent GNU Emacs distributions), turns on side-bar line numbering: +;; +;; (linum-on) +;; +;; and alternatively, by using command: +;; +;; M-x linum-relative-mode +;; +;; Relative line numbering should already be enabled by default (by installing this package), following *linum-on* or enabling *linum-mode*. One can also use the *linum-relative-toggle* interactive function to switch between relative and non-relative line numbering: +;; +;; M-x linum-relative-toggle +;; + +;;; Backends + +;; By default, linum-relative use *linum-mode* as backend, since linum-mode is based on emacs-lisp, you may have performance issue on large file. +;; +;; Since linum-relative 0.6, if you also use emacs version 26.1 or above, you can setup `linum-relative-backend' to make linum-relative-mode use `display-line-number-mode' as backend, which is implement in C so the performance is really nice. +;; +;; However some linum-relative's customize function may not work propely. +;; +;; Here's how to use `display-line-number-mode' as backend: +;; +;; ```elisp +;; ;; Use `display-line-number-mode' as linum-mode's backend for smooth performance +;; (setq linum-relative-backend 'display-line-numbers-mode) +;; ``` + + +;;; Code: + +(eval-when-compile (require 'cl)) + +;; display-line-numbers is shipped with emacs 26.0.50 +(when (version<= "26.0.50" emacs-version) + (require 'display-line-numbers)) +(require 'linum) + + +(defgroup linum-relative nil + "Show relative line numbers on fringe." + :group 'convenience) + +;;;; Faces +;; NOTE: can't work on `display-line-numbers-mode' +(defface linum-relative-current-face + '((t :inherit linum :foreground "#CAE682" :background "#444444" :weight bold)) + "Face for displaying current line. + +This won't take effect if you choose `display-line-numbers-mode' backend." + :group 'linum-relative) + +;;;; Customize Variables + +;; NOTE: can't work on `display-line-numbers-mode' +(defcustom linum-relative-current-symbol "0" + "The symbol you want to show on the current line, by default it is 0. + You can use any string like \"->\". If this variable is empty string, +linum-releative will show the real line number at current line. + +This won't take effect if you choose `display-line-numbers-mode' backend." + :type 'string + :group 'linum-relative) + +;; NOTE: can't work on `display-line-numbers-mode' +(defcustom linum-relative-plusp-offset 0 + "Offset to use for positive relative line numbers. + +This won't take effect if you choose `display-line-numbers-mode' backend." + :type 'integer + :group 'linum-relative) + +;; NOTE: can't work on `display-line-numbers-mode' +(defcustom linum-relative-format "%3s" + "Format for each line. Good for adding spaces/paddings like so: \" %3s \" + +This won't take effect if you choose `display-line-numbers-mode' backend." + :type 'string + :group 'linum-relative) + +(defcustom linum-relative-lighter " LR" + "Lighter of linum-relative-mode" + :type 'string + :group 'linum-relative) + +(defcustom linum-relative-backend 'linum-mode + "The default backend for `linum-relative', by default we use +`linum-mode' (slow), you can switch to `display-line-numbers-mode' if +you has emacs-version greater than 26.0.50." + :group 'linum-relative + :type '(choice (const :tag "Use display-line-numbers-mode as backend" display-line-numbers-mode) + (other :tag "Use linum-mode as backend" linum-mode))) + +;;;; Internal Variables + +;; NOTE: can't work on `display-line-numbers-mode' +(defvar linum-relative-last-pos 0 + "Store last position.") + +;; NOTE: can't work on `display-line-numbers-mode' +(defvar linum-relative-user-format linum-format + "Store the users linum-format") + +(defvar linum-relative-user-type (bound-and-true-p display-line-numbers-type) + "Store the user's `display-line-number-type' value") + +;;;; helm support +(defvar helm-buffer) +(defvar helm-candidate-separator) +(defvar helm-alive-p) +(declare-function with-helm-buffer "ext:helm-lib.el" (&rest body)) +(declare-function helm-candidate-number-at-point "ext:helm.el") +(declare-function helm-pos-header-line-p "ext:helm.el") + +(defmacro linum-relative-with-helm-buffer (&rest body) + (when (fboundp 'with-helm-buffer) + `(with-helm-buffer ,@body))) + +(defun linum-relative-in-helm-p () + "Return non nil when in an helm session." + (bound-and-true-p helm-alive-p)) + +(defun linum-relative-for-helm () + (linum-relative-with-helm-buffer + (make-local-variable 'linum-relative-last-pos)) + (linum-update helm-buffer)) + +;;;; Advices +(defadvice linum-update (before relative-linum-update activate) + "This advice get the last position of linum." + (if (linum-relative-in-helm-p) + (setq linum-relative-last-pos (helm-candidate-number-at-point)) + (setq linum-relative-last-pos (line-number-at-pos)))) + +;;;; Functions +(defun linum-relative (line-number) + (when (linum-relative-in-helm-p) + (linum-relative-with-helm-buffer + (if (looking-at helm-candidate-separator) + (setq line-number (save-excursion + (forward-line 1) (helm-candidate-number-at-point))) + (setq line-number (helm-candidate-number-at-point))))) + (let* ((diff1 (abs (- line-number linum-relative-last-pos))) + (diff (if (minusp diff1) + diff1 + (+ diff1 linum-relative-plusp-offset))) + (current-p (= diff linum-relative-plusp-offset)) + (current-symbol (if (and linum-relative-current-symbol current-p) + (if (string= "" linum-relative-current-symbol) + (number-to-string line-number) + linum-relative-current-symbol) + (number-to-string diff))) + (face (if current-p 'linum-relative-current-face 'linum))) + (if (and (linum-relative-in-helm-p) + (linum-relative-with-helm-buffer + (or (looking-at helm-candidate-separator) + (eq (point-at-bol) (point-at-eol)) + (helm-pos-header-line-p)))) + (propertize (format linum-relative-format current-symbol) 'invisible t) + (propertize (format linum-relative-format current-symbol) 'face face)))) + + +(defun linum-relative-on () + "Turn ON linum-relative." + (cond + ;; if use `display-line-numbers-mode' + ((eq linum-relative-backend 'display-line-numbers-mode) + (unless (eq linum-relative-user-type 'relative) + (setq linum-relative-user-type display-line-numbers-type) + (setq display-line-numbers-type 'relative)) + (display-line-numbers-mode 1)) + ;; default for linum-mode backend + (t (unless (eq linum-format 'linum-relative) + (setq linum-relative-user-format linum-format) + (setq linum-format 'linum-relative)) + (linum-mode 1)))) + +(defun linum-relative-off () + "Turn OFF linum-relative." + (cond + ;; if use `display-line-numbers-mode' + ((eq linum-relative-backend 'display-line-numbers-mode) + (setq display-line-numbers-type linum-relative-user-type) + (display-line-numbers-mode -1)) + ;; default for linum-mode backend + (t (setq linum-format linum-relative-user-format) + (linum-mode -1)))) + +;;;###autoload +(defun linum-relative-toggle () + "Toggle between linum-relative and linum." + (interactive) + (cond + ;; if use `display-line-numbers-mode' + ((eq linum-relative-backend 'display-line-numbers-mode) + (if (eq display-line-numbers-type 'relative) + (linum-relative-off) + (linum-relative-on))) + ;; default for linum-mode backend + (t (if (eq linum-format 'linum-relative) + (linum-relative-off) + (linum-relative-on))))) + +;;;###autoload +(define-minor-mode linum-relative-mode + "Display relative line numbers for current buffer." + :group 'linum-relative + :lighter linum-relative-lighter + (if linum-relative-mode + (linum-relative-on) + (linum-relative-off))) + +;;;###autoload +(define-global-minor-mode linum-relative-global-mode + linum-relative-mode (lambda () (unless (linum-relative-in-helm-p) + (linum-relative-mode 1)))) + +;;;; Interaction of helm with linum-relative + +(defun helm--turn-on-linum-relative () + (with-helm-buffer (linum-relative-mode 1))) + +;;;###autoload +(define-minor-mode helm-linum-relative-mode + "Turn on `linum-relative-mode' in helm." + :group 'helm + (if helm-linum-relative-mode + (progn + (add-hook 'helm-move-selection-after-hook 'linum-relative-for-helm) + (add-hook 'helm-after-initialize-hook 'helm--turn-on-linum-relative) + (add-hook 'helm-after-preselection-hook 'linum-relative-for-helm)) + (remove-hook 'helm-move-selection-after-hook 'linum-relative-for-helm) + (remove-hook 'helm-after-initialize-hook 'helm--turn-on-linum-relative) + (remove-hook 'helm-after-preselection-hook 'linum-relative-for-helm))) + + +(provide 'linum-relative) +;;; linum-relative.el ends here. |