From c38c3aaab8f1f3f6d290632927b4bca1de335503 Mon Sep 17 00:00:00 2001 From: Joao Tavora Date: Tue, 22 May 2012 17:47:32 +0100 Subject: [PATCH] bugfix: Fix #242 --- extras/imported/html-mode/.yas-setup.el | 2 +- extras/imported/rails-mode/.yas-setup.el | 4 +- yasnippet.el | 106 ++++++++++++----------- 3 files changed, 57 insertions(+), 55 deletions(-) diff --git a/extras/imported/html-mode/.yas-setup.el b/extras/imported/html-mode/.yas-setup.el index 580fa89..2b18e02 100644 --- a/extras/imported/html-mode/.yas-setup.el +++ b/extras/imported/html-mode/.yas-setup.el @@ -108,7 +108,7 @@ (interactive) (let* ((tag-at-point (sgml-beginning-of-tag)) (fragment (and tag-at-point - (aget yas/html-tag-description-urls (upcase tag-at-point))))) + (cdr (assoc (upcase tag-at-point) yas/html-tag-description-urls))))) (if fragment (browse-url (concat "http://www.w3.org/TR/html4/index/" fragment)) diff --git a/extras/imported/rails-mode/.yas-setup.el b/extras/imported/rails-mode/.yas-setup.el index f4ede4a..8b9fc13 100644 --- a/extras/imported/rails-mode/.yas-setup.el +++ b/extras/imported/rails-mode/.yas-setup.el @@ -118,8 +118,8 @@ (let* ((start (point)) (end (save-excursion (search-forward-regexp "^\s*def\sself\.down" nil 'noerror))) - (up (aget (aget yas/rails-intelligent-migration-snippet-bits type) :up)) - (down (aget (aget yas/rails-intelligent-migration-snippet-bits type) :down)) + (up (cdr (assoc :up (cdr (assoc type yas/rails-intelligent-migration-snippet-bits))))) + (down (cdr (assoc :down (cdr (assoc type yas/rails-intelligent-migration-snippet-bits))))) (snippet (and up down start end (concat up (buffer-substring-no-properties start end) diff --git a/yasnippet.el b/yasnippet.el index bf8563f..544bb23 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -144,7 +144,6 @@ ;;; Code: (require 'cl) -(require 'assoc) (require 'easymenu) (require 'help-mode) @@ -1289,8 +1288,9 @@ ensure your use `make-local-variable' when you set it.") (unless table (setq table (yas/make-snippet-table (symbol-name mode))) (puthash mode table yas/tables) - (aput 'yas/direct-keymaps (intern (format "yas//direct-%s" mode)) - (yas/table-direct-keymap table))) + (push (cons (intern (format "yas//direct-%s" mode)) + (yas/table-direct-keymap table)) + yas/direct-keymaps)) table)) (defun yas/get-snippet-tables () @@ -1520,22 +1520,25 @@ TEMPLATES is a list of `yas/template'." (defun yas/x-pretty-prompt-templates (prompt templates) "Display TEMPLATES, grouping neatly by table name." - (let ((pretty-alist (list)) + (let ((organized (make-hash-table :test #'equal)) menu more-than-one-table prefix) (dolist (tl templates) - (aput 'pretty-alist (yas/template-table tl) (cons tl (aget pretty-alist (yas/template-table tl))))) - (setq more-than-one-table (> (length pretty-alist) 1)) + (puthash (yas/template-table tl) + (cons tl + (gethash (yas/template-table tl) organized)) + organized)) + (setq more-than-one-table (> (hash-table-count organized) 1)) (setq prefix (if more-than-one-table " " "")) - (dolist (table-and-templates pretty-alist) - (when (cdr table-and-templates) - (if more-than-one-table - (push (yas/table-name (car table-and-templates)) menu)) - (dolist (template (cdr table-and-templates)) - (push (cons (concat prefix (yas/template-name template)) - template) menu)))) + (if more-than-one-table + (maphash #'(lambda (table templates) + (push (yas/table-name table) menu) + (dolist (tl templates) + (push (cons (concat prefix (yas/template-name tl)) tl) menu))) organized) + (setq menu (mapcar #'(lambda (tl) (cons (concat prefix (yas/template-name tl)) tl)) templates))) + (setq menu (nreverse menu)) (or (x-popup-menu (if (fboundp 'posn-at-point) (let ((x-y (posn-x-y (posn-at-point (point))))) @@ -2603,47 +2606,46 @@ With optional prefix argument KILL quit the window and buffer." (insert "\n")) (insert (make-string 100 ?-) "\n") (insert "group state name key binding\n") - (let ((groups-alist (list)) - group) + (let ((groups-hash (make-hash-table :test #'equal))) (maphash #'(lambda (k v) - (setq group (or (yas/template-fine-group v) - "(top level)")) - (when (yas/template-name v) - - (aput 'groups-alist group (cons v (aget groups-alist group))))) + (let ((group (or (yas/template-fine-group v) + "(top level)"))) + (when (yas/template-name v) + (puthash group + (cons v (gethash group groups-hash)) + groups-hash)))) (yas/table-uuidhash table)) - (dolist (group-and-templates groups-alist) - (when (rest group-and-templates) - (setq group (truncate-string-to-width (car group-and-templates) 25 0 ? "...")) - (insert (make-string 100 ?-) "\n") - (dolist (p (cdr group-and-templates)) - (let ((name (truncate-string-to-width (propertize (format "\\\\snippet `%s'" (yas/template-name p)) - 'yasnippet p) - 50 0 ? "...")) - (group (prog1 group - (setq group (make-string (length group) ? )))) - (condition-string (let ((condition (yas/template-condition p))) - (if (and condition - original-buffer) - (with-current-buffer original-buffer - (if (yas/eval-condition condition) - "(y)" - "(s)")) - "(a)")))) - (insert group " ") - (insert condition-string " ") - (insert name - (if (string-match "\\.\\.\\.$" name) - "'" - " ") - " ") - (insert (truncate-string-to-width (or (yas/template-key p) "") - 15 0 ? "...") " ") - (insert (truncate-string-to-width (key-description (yas/template-keybinding p)) - 15 0 ? "...") " ") - (insert "\n"))))))) - - + (maphash + #'(lambda (group templates) + (setq group (truncate-string-to-width group 25 0 ? "...")) + (insert (make-string 100 ?-) "\n") + (dolist (p templates) + (let ((name (truncate-string-to-width (propertize (format "\\\\snippet `%s'" (yas/template-name p)) + 'yasnippet p) + 50 0 ? "...")) + (group (prog1 group + (setq group (make-string (length group) ? )))) + (condition-string (let ((condition (yas/template-condition p))) + (if (and condition + original-buffer) + (with-current-buffer original-buffer + (if (yas/eval-condition condition) + "(y)" + "(s)")) + "(a)")))) + (insert group " ") + (insert condition-string " ") + (insert name + (if (string-match "\\.\\.\\.$" name) + "'" + " ") + " ") + (insert (truncate-string-to-width (or (yas/template-key p) "") + 15 0 ? "...") " ") + (insert (truncate-string-to-width (key-description (yas/template-keybinding p)) + 15 0 ? "...") " ") + (insert "\n")))) + groups-hash)))