[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 11dbed7 7/7: Merge commit '29bfd8704b99f0b8600ea2bdc1f467d
From: |
Artur Malabarba |
Subject: |
[elpa] master 11dbed7 7/7: Merge commit '29bfd8704b99f0b8600ea2bdc1f467df04c9e8bc' |
Date: |
Sun, 13 Sep 2015 15:01:14 +0000 |
branch: master
commit 11dbed76e7c17ee9a919da0cf4301c20d942df3c
Merge: ad82b99 29bfd87
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>
Merge commit '29bfd8704b99f0b8600ea2bdc1f467df04c9e8bc'
---
packages/nameless/README.org | 11 +++++++++
packages/nameless/nameless.el | 50 +++++++++++++++++++++++++++-------------
2 files changed, 45 insertions(+), 16 deletions(-)
diff --git a/packages/nameless/README.org b/packages/nameless/README.org
index 367ffed..49ea800 100644
--- a/packages/nameless/README.org
+++ b/packages/nameless/README.org
@@ -78,6 +78,17 @@ as a file-local variable.
Note that there’s no ~quote~ before ~((c~!\\
You can also configure it for a whole project, by setting it as a dir-local
variable.
+** Private symbols
+
+Private symbols in elisp are written with an extra dash after the
+prefix (e.g., ~foobar--indent-impl~). With Nameless, these are usually
+displayed as ~:-indent-impl~, but you can also make them be displayed
+as ~::indent-impl~ by setting
+
+#+BEGIN_SRC emacs-lisp
+(setq nameless-private-prefix t)
+#+END_SRC
+
** Indentation and paragraph filling
Hiding parts of symbols could affect the way Emacs indents your code
and fills your paragraphs. Nameless lets you decide whether you want
diff --git a/packages/nameless/nameless.el b/packages/nameless/nameless.el
index f7b47ef..e79b01e 100644
--- a/packages/nameless/nameless.el
+++ b/packages/nameless/nameless.el
@@ -4,7 +4,7 @@
;; Author: Artur Malabarba <address@hidden>
;; Keywords: convenience, lisp
-;; Version: 0.4.1
+;; Version: 0.5
;; Package-Requires: ((emacs "24.4"))
;; This program is free software; you can redistribute it and/or modify
@@ -98,6 +98,12 @@ for it to take effect."
(const :tag "Don't affect indentation" nil)
(const :tag "Only outside strings" 'outside-strings)))
+(defcustom nameless-private-prefix nil
+ "If non-nil, private symbols are displayed with a double prefix.
+For instance, the function `foobar--internal-impl' will be
+displayed as `::internal-impl', instead of `:-internal-impl'."
+ :type 'boolean)
+
;;; Font-locking
(defun nameless--make-composition (s)
@@ -116,9 +122,16 @@ for it to take effect."
(not (nth 3 (syntax-ppss)))))))
(dis (concat display nameless-prefix)))
(when compose
- (compose-region (match-beginning 1)
- (match-end 1)
- (nameless--make-composition dis)))
+ (if (and nameless-private-prefix
+ (equal "-" (substring (match-string 0) -1)))
+ (progn
+ (setq dis (concat dis nameless-prefix))
+ (compose-region (match-beginning 0)
+ (match-end 0)
+ (nameless--make-composition dis)))
+ (compose-region (match-beginning 1)
+ (match-end 1)
+ (nameless--make-composition dis))))
`(face nameless-face ,@(unless compose (list 'display dis))))))
(defvar-local nameless--font-lock-keywords nil)
@@ -134,9 +147,10 @@ for it to take effect."
(nameless--ensure))
(defun nameless--add-keywords (&rest r)
- "Add font-lock keywords displaying REGEXP as DISPLAY.
+ "Add font-lock keywords displaying ALIAS as DISPLAY.
+ALIAS may be nil, in which case it refers to `nameless-current-name'.
-\(fn (regexp . display) [(regexp . display) ...])"
+\(fn (alias . display) [(alias . display) ...])"
(setq-local font-lock-extra-managed-props
`(composition display ,@font-lock-extra-managed-props))
(let ((kws (mapcar (lambda (x) `(,(nameless--name-regexp (cdr x)) 1
(nameless--compose-as ,(car x)))) r)))
@@ -149,15 +163,16 @@ for it to take effect."
(defvar-local nameless-current-name nil)
(put 'nameless-current-name 'safe-local-variable #'stringp)
-(defun nameless--in-arglist-p ()
- "Is point inside an arglist?"
+(defun nameless--in-arglist-p (l)
+ "Is point L inside an arglist?"
(save-excursion
+ (goto-char l)
(ignore-errors
(backward-up-list)
(or (progn (forward-sexp -1)
(looking-at-p "[a-z-]lambda\\_>"))
(progn (forward-sexp -1)
- (looking-at-p
"\\(cl-\\)?def\\(un\\|macro\\|inline\\)\\*?\\_>"))))))
+ (looking-at-p "\\(cl-\\)?def"))))))
(defun nameless-insert-name (&optional noerror)
"Insert `nameless-current-name' or the alias at point.
@@ -196,13 +211,16 @@ configured, or if `nameless-current-name' is nil."
(defun nameless-insert-name-or-self-insert (&optional self-insert)
"Insert the name of current package, with a hyphen."
(interactive "P")
- (if (or self-insert
- (not nameless-current-name)
- (eq (char-before) ?\\)
- (nameless--in-arglist-p))
- (call-interactively #'self-insert-command)
- (or (nameless-insert-name 'noerror)
- (call-interactively #'self-insert-command))))
+ (let ((l (point)))
+ (call-interactively #'self-insert-command)
+ (unless (or self-insert
+ (not nameless-current-name)
+ (eq (char-before l) ?\\)
+ (nameless--in-arglist-p l))
+ (undo-boundary)
+ (delete-region l (point))
+ (unless (nameless-insert-name 'noerror)
+ (call-interactively #'self-insert-command)))))
(put 'nameless-insert-name-or-self-insert 'delete-selection t)
- [elpa] master updated (ad82b99 -> 11dbed7), Artur Malabarba, 2015/09/13
- [elpa] master eba0fdd 1/7: [Fix #2] Add option to display internal symbols with the prefix, Artur Malabarba, 2015/09/13
- [elpa] master 663f78a 2/7: [Fix #8] Add undo-boundaries before inserting the prefix, Artur Malabarba, 2015/09/13
- [elpa] master 121a841 4/7: Fix private prefixes with the `display' method, Artur Malabarba, 2015/09/13
- [elpa] master b9fd4d7 3/7: Fix typo that completely broke everything, Artur Malabarba, 2015/09/13
- [elpa] master 4ce354f 5/7: Doc, Artur Malabarba, 2015/09/13
- [elpa] master 29bfd87 6/7: Version bump, Artur Malabarba, 2015/09/13
- [elpa] master 11dbed7 7/7: Merge commit '29bfd8704b99f0b8600ea2bdc1f467df04c9e8bc',
Artur Malabarba <=