]> code.delx.au - gnu-emacs-elpa/commitdiff
Merge commit 'a3dfd7ecf9c58898241c8d1145eb8e0c875f5448'
authorArtur Malabarba <bruce.connor.am@gmail.com>
Wed, 14 Oct 2015 11:48:39 +0000 (12:48 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Wed, 14 Oct 2015 11:48:39 +0000 (12:48 +0100)
1  2 
packages/nameless/README.org
packages/nameless/nameless.el

index 49ea800b44c2d05ba7193ada657bee5657e4c67e,9d8b7eb5e906134b60b707729657ecc3d7f69426..9d8b7eb5e906134b60b707729657ecc3d7f69426
@@@ -53,6 -53,11 +53,11 @@@ M-x add-file-local-variable RET nameles
  You can also set the same name for all lisp files in a project by
  setting dir-local variables with ~M-x add-file-local-variable~.
  
+ If you /don’t/ want Nameless to use a namespace name at all (neither
+ manual nor automatic), you can set ~nameless-discover-current-name~ to
+ ~nil~. This will disable this functionality, so that Nameless will
+ /only/ use aliases (see next item).
  ** Requiring other packages as aliases
  Nameless can also be used to “import” other packages as aliases. For
  instance, in the default behaviour, functions in the ~font-lock~
@@@ -89,10 -94,17 +94,17 @@@ as ~::indent-impl~ by settin
  (setq nameless-private-prefix t)
  #+END_SRC
  
+ ** Packages that don’t use ~-~ (hyphen) as a separator
+ You can set ~nameless-separator~ file-locally to whatever separator
+ you package uses. Most packages use hyphens, by some use ~/~, ~|~, or
+ ~:~.
+ You can also set it to ~nil~ globally and the separator will never be
+ hidden.
  ** 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
- that to happen or not. 
+ that to happen or not.
  
  The default behavior is that code is indented according to what you
  see (i.e., according to short symbols), but text inside strings is
index e79b01e63aee01a6b4241dea14a983fac56fd338,183b46d181fcf5741819118581eaa27c8101c155..183b46d181fcf5741819118581eaa27c8101c155
@@@ -3,8 -3,9 +3,9 @@@
  ;; Copyright (C) 2015 Free Software Foundation, Inc.
  
  ;; Author: Artur Malabarba <emacs@endlessparentheses.com>
+ ;; URL: https://github.com/Malabarba/nameless
  ;; Keywords: convenience, lisp
- ;; Version: 0.5
+ ;; Version: 0.5.1
  ;; Package-Requires: ((emacs "24.4"))
  
  ;; This program is free software; you can redistribute it and/or modify
@@@ -82,6 -83,13 +83,13 @@@ variable."
                        x)
                  safe))))
  
+ (defcustom nameless-discover-current-name t
+   "If non-nil, discover package name automatically.
+ If nil, `nameless-current-name' must be set explicitly, or left as nil,
+ in which case only namespaces from `nameless-global-aliases' and
+ `nameless-aliases' are used."
+   :type 'boolean)
  (defface nameless-face
    '((t :inherit font-lock-type-face))
    "Face used on `nameless-prefix'")
@@@ -96,7 -104,8 +104,8 @@@ After changing this variable, you must 
  for it to take effect."
    :type '(choice (const :tag "Always affect indentation" t)
                   (const :tag "Don't affect indentation" nil)
-                  (const :tag "Only outside strings" 'outside-strings)))
+                  (const :tag "Only outside strings" outside-strings)))
+ (put 'nameless-current-name 'safe-local-variable #'symbolp)
  
  (defcustom nameless-private-prefix nil
    "If non-nil, private symbols are displayed with a double prefix.
@@@ -104,6 -113,17 +113,17 @@@ For instance, the function `foobar--int
  displayed as `::internal-impl', instead of `:-internal-impl'."
    :type 'boolean)
  
+ (defcustom nameless-separator "-"
+   "Separator used between package prefix and rest of symbol.
+ The separator is hidden along with the package name.  For
+ instance, setting it to \"/\" means that `init/bio' will be
+ displayed as `:bio' (assuming `nameless-current-name' is
+ \"init\").  The default is \"-\", since this is the
+ separator recommended by the Elisp manual.
+ Value can also be nil, in which case the separator is never hidden."
+   :type '(choice string (constant nil)))
  \f
  ;;; Font-locking
  (defun nameless--make-composition (s)
                       (and nameless-affect-indentation-and-filling
                            (or (not (eq nameless-affect-indentation-and-filling 'outside-strings))
                                (not (nth 3 (syntax-ppss)))))))
-           (dis (concat display nameless-prefix)))
-       (when compose
-         (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))))))
+           (dis (concat display nameless-prefix))
+           (beg (match-beginning 1))
+           (end (match-end 1))
+           (private-prefix (and nameless-private-prefix
+                                (equal nameless-separator (substring (match-string 0) -1)))))
+       (when private-prefix
+         (setq beg (match-beginning 0))
+         (setq end (match-end 0))
+         (setq dis (concat dis nameless-prefix)))
+       (if compose
+           (compose-region beg end (nameless--make-composition dis))
+         (add-text-properties beg end (list 'display dis)))
+       '(face nameless-face))))
  
  (defvar-local nameless--font-lock-keywords nil)
  
@@@ -153,7 -173,7 +173,7 @@@ ALIAS may be nil, in which case it refe
  \(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)))
+   (let ((kws (mapcar (lambda (x) `(,(nameless--name-regexp (cdr x)) 1 (nameless--compose-as ,(car x)) prepend)) r)))
      (setq nameless--font-lock-keywords kws)
      (font-lock-add-keywords nil kws t))
    (nameless--ensure))
@@@ -203,7 -223,7 +223,7 @@@ configured, or if `nameless-current-nam
            (unless noerror
              (user-error "No name for alias `%s', see `nameless-aliases'" alias))))
      (if nameless-current-name
-         (progn (insert nameless-current-name "-")
+         (progn (insert nameless-current-name nameless-separator)
                 t)
        (unless noerror
          (user-error "No name for current buffer, see `nameless-current-name'")))))
  
  (defun nameless--name-regexp (name)
    "Return a regexp of the current name."
-   (concat "\\_<@?\\(" (regexp-quote name) "-\\)\\(\\s_\\|\\sw\\)"))
+   (concat "\\_<@?\\(" (regexp-quote name)
+           nameless-separator "\\)\\(\\s_\\|\\sw\\)"))
  
  (defun nameless--filter-string (s)
    "Remove from string S any disply or composition properties.
@@@ -241,18 -262,19 +262,19 @@@ Return S.
  (define-minor-mode nameless-mode
    nil nil " :" `((,(kbd "C-c C--") . nameless-insert-name))
    (if nameless-mode
-       (if (or nameless-current-name
-               (ignore-errors (string-match "\\.el\\'" (lm-get-package-name))))
-           (progn
-             (unless nameless-current-name
-               (setq nameless-current-name (replace-regexp-in-string "\\(-mode\\)?\\.[^.]*\\'" "" (lm-get-package-name))))
-             (add-function :filter-return (local 'filter-buffer-substring-function)
-                           #'nameless--filter-string)
-             (apply #'nameless--add-keywords
-                    `((nil . ,nameless-current-name)
-                      ,@nameless-global-aliases
-                      ,@nameless-aliases)))
-         (nameless-mode -1))
+       (progn
+         (when (and (not nameless-current-name)
+                    nameless-discover-current-name
+                    (ignore-errors (string-match "\\.el\\'" (lm-get-package-name))))
+           (setq nameless-current-name
+                 (replace-regexp-in-string "\\(-mode\\)?\\.[^.]*\\'" "" (lm-get-package-name))))
+         (add-function :filter-return (local 'filter-buffer-substring-function)
+                       #'nameless--filter-string)
+         (apply #'nameless--add-keywords
+                `(,@(when nameless-current-name
+                      `((nil . ,nameless-current-name)))
+                  ,@nameless-global-aliases
+                  ,@nameless-aliases)))
      (remove-function (local 'filter-buffer-substring-function)
                       #'nameless--filter-string)
      (setq nameless-current-name nil)