2006-01-29 13:08:58 +00:00
|
|
|
;;; erc-speedbar.el --- Speedbar support for ERC
|
|
|
|
|
2019-01-01 00:59:58 +00:00
|
|
|
;; Copyright (C) 2001-2004, 2006-2019 Free Software Foundation, Inc.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; Author: Mario Lang <mlang@delysid.org>
|
2019-05-26 00:58:28 -07:00
|
|
|
;; Contributor: Eric M. Ludlam <zappo@gnu.org>
|
2019-05-25 13:43:06 -07:00
|
|
|
;; Maintainer: emacs-devel@gnu.org
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
2008-05-06 03:36:21 +00:00
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
2006-01-29 13:08:58 +00:00
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 03:36:21 +00:00
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;; GNU Emacs 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
|
2017-09-13 15:52:52 -07:00
|
|
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
2006-01-29 13:08:58 +00:00
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;; This module provides integration of ERC into the Speedbar.
|
|
|
|
|
|
|
|
;;; TODO / ideas:
|
|
|
|
|
|
|
|
;; * Write intelligent update function:
|
|
|
|
;; update-channel, update-nick, remove-nick-from-channel, ...
|
|
|
|
;; * Use indicator-strings for op/voice
|
|
|
|
;; * Extract/convert face notes field from bbdb if available and show
|
|
|
|
;; it using sb-image.el
|
|
|
|
;;
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
(require 'erc)
|
|
|
|
(require 'speedbar)
|
|
|
|
(condition-case nil (require 'dframe) (error nil))
|
|
|
|
|
|
|
|
;;; Customization:
|
|
|
|
|
|
|
|
(defgroup erc-speedbar nil
|
|
|
|
"Integration of ERC in the Speedbar"
|
|
|
|
:group 'erc)
|
|
|
|
|
|
|
|
(defcustom erc-speedbar-sort-users-type 'activity
|
|
|
|
"How channel nicknames are sorted.
|
|
|
|
|
Prefer directed to neutral quotes
Prefer directed to neutral quotes in docstings and diagnostics.
In docstrings, escape apostrophes that would otherwise be translated
to curved quotes using the newer, simpler rules.
* admin/unidata/unidata-gen.el (unidata-gen-table):
* lisp/align.el (align-region):
* lisp/allout.el (allout-mode, allout-solicit-alternate-bullet):
* lisp/bookmark.el (bookmark-default-annotation-text):
* lisp/calc/calc-aent.el (math-read-if, math-read-factor):
* lisp/calc/calc-lang.el (math-read-giac-subscr)
(math-read-math-subscr):
* lisp/calc/calc-misc.el (report-calc-bug):
* lisp/calc/calc-prog.el (calc-fix-token-name)
(calc-read-parse-table-part):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
* lisp/dabbrev.el (dabbrev-expand):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/elint.el (elint-get-top-forms):
* lisp/emacs-lisp/lisp-mnt.el (lm-verify):
* lisp/emulation/viper-cmd.el (viper-toggle-search-style):
* lisp/erc/erc-button.el (erc-nick-popup):
* lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login):
* lisp/eshell/em-dirs.el (eshell/cd):
* lisp/eshell/em-glob.el (eshell-glob-regexp):
* lisp/eshell/em-pred.el (eshell-parse-modifiers):
* lisp/eshell/esh-arg.el (eshell-parse-arguments):
* lisp/eshell/esh-opt.el (eshell-show-usage):
* lisp/files-x.el (modify-file-local-variable):
* lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer)
(filesets-update-pre010505):
* lisp/find-cmd.el (find-generic, find-to-string):
* lisp/gnus/auth-source.el (auth-source-netrc-parse-entries):
* lisp/gnus/gnus-agent.el (gnus-agent-check-overview-buffer)
(gnus-agent-fetch-headers):
* lisp/gnus/gnus-int.el (gnus-start-news-server):
* lisp/gnus/gnus-registry.el:
(gnus-registry--split-fancy-with-parent-internal):
* lisp/gnus/gnus-score.el (gnus-summary-increase-score):
* lisp/gnus/gnus-start.el (gnus-convert-old-newsrc):
* lisp/gnus/gnus-topic.el (gnus-topic-rename):
* lisp/gnus/legacy-gnus-agent.el (gnus-agent-unlist-expire-days):
* lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
* lisp/gnus/spam.el (spam-check-blackholes):
* lisp/mail/feedmail.el (feedmail-run-the-queue):
* lisp/mpc.el (mpc-playlist-rename):
* lisp/net/ange-ftp.el (ange-ftp-shell-command):
* lisp/net/mairix.el (mairix-widget-create-query):
* lisp/net/tramp-cache.el:
* lisp/obsolete/otodo-mode.el (todo-more-important-p):
* lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
* lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
* lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
* lisp/org/ob-core.el (org-babel-goto-named-src-block)
(org-babel-goto-named-result):
* lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
* lisp/org/ob-ref.el (org-babel-ref-resolve):
* lisp/org/org-agenda.el (org-agenda-prepare):
* lisp/org/org-bibtex.el (org-bibtex-fields):
* lisp/org/org-clock.el (org-clock-notify-once-if-expired)
(org-clock-resolve):
* lisp/org/org-feed.el (org-feed-parse-atom-entry):
* lisp/org/org-habit.el (org-habit-parse-todo):
* lisp/org/org-mouse.el (org-mouse-popup-global-menu)
(org-mouse-context-menu):
* lisp/org/org-table.el (org-table-edit-formulas):
* lisp/org/ox.el (org-export-async-start):
* lisp/play/dunnet.el (dun-score, dun-help, dun-endgame-question)
(dun-rooms, dun-endgame-questions):
* lisp/progmodes/ada-mode.el (ada-goto-matching-start):
* lisp/progmodes/ada-xref.el (ada-find-executable):
* lisp/progmodes/antlr-mode.el (antlr-options-alists):
* lisp/progmodes/flymake.el (flymake-parse-err-lines)
(flymake-start-syntax-check-process):
* lisp/progmodes/python.el (python-define-auxiliary-skeleton):
* lisp/progmodes/sql.el (sql-comint):
* lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
* lisp/server.el (server-get-auth-key):
* lisp/subr.el (version-to-list):
* lisp/textmodes/reftex-ref.el (reftex-label):
* lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
* lisp/vc/ediff-diff.el (ediff-same-contents):
* lisp/vc/vc-cvs.el (vc-cvs-mode-line-string):
* test/automated/tramp-tests.el (tramp-test33-asynchronous-requests):
Use directed rather than neutral quotes in diagnostics.
2015-08-24 23:39:33 -07:00
|
|
|
`activity' - Sort users by channel activity
|
|
|
|
`alphabetical' - Sort users alphabetically
|
|
|
|
nil - Do not sort users"
|
2006-01-29 13:08:58 +00:00
|
|
|
:group 'erc-speedbar
|
|
|
|
:type '(choice (const :tag "Sort users by channel activity" activity)
|
|
|
|
(const :tag "Sort users alphabetically" alphabetical)
|
|
|
|
(const :tag "Do not sort users" nil)))
|
|
|
|
|
|
|
|
(defvar erc-speedbar-key-map nil
|
|
|
|
"Keymap used when in erc display mode.")
|
|
|
|
|
|
|
|
(defun erc-install-speedbar-variables ()
|
|
|
|
"Install those variables used by speedbar to enhance ERC."
|
|
|
|
(if erc-speedbar-key-map
|
|
|
|
nil
|
|
|
|
(setq erc-speedbar-key-map (speedbar-make-specialized-keymap))
|
|
|
|
|
|
|
|
;; Basic tree features
|
|
|
|
(define-key erc-speedbar-key-map "e" 'speedbar-edit-line)
|
|
|
|
(define-key erc-speedbar-key-map "\C-m" 'speedbar-edit-line)
|
|
|
|
(define-key erc-speedbar-key-map "+" 'speedbar-expand-line)
|
|
|
|
(define-key erc-speedbar-key-map "=" 'speedbar-expand-line)
|
|
|
|
(define-key erc-speedbar-key-map "-" 'speedbar-contract-line))
|
|
|
|
|
|
|
|
(speedbar-add-expansion-list '("ERC" erc-speedbar-menu-items
|
|
|
|
erc-speedbar-key-map
|
|
|
|
erc-speedbar-server-buttons))
|
|
|
|
(speedbar-add-mode-functions-list
|
|
|
|
'("ERC" (speedbar-item-info . erc-speedbar-item-info))))
|
|
|
|
|
|
|
|
(defvar erc-speedbar-menu-items
|
|
|
|
'(["Goto buffer" speedbar-edit-line t]
|
|
|
|
["Expand Node" speedbar-expand-line
|
|
|
|
(save-excursion (beginning-of-line)
|
|
|
|
(looking-at "[0-9]+: *.\\+. "))]
|
|
|
|
["Contract Node" speedbar-contract-line
|
|
|
|
(save-excursion (beginning-of-line)
|
|
|
|
(looking-at "[0-9]+: *.-. "))])
|
|
|
|
"Additional menu-items to add to speedbar frame.")
|
|
|
|
|
|
|
|
;; Make sure our special speedbar major mode is loaded
|
|
|
|
(if (featurep 'speedbar)
|
|
|
|
(erc-install-speedbar-variables)
|
|
|
|
(add-hook 'speedbar-load-hook 'erc-install-speedbar-variables))
|
|
|
|
|
|
|
|
;;; ERC hierarchy display method
|
|
|
|
;;;###autoload
|
|
|
|
(defun erc-speedbar-browser ()
|
|
|
|
"Initialize speedbar to display an ERC browser.
|
|
|
|
This will add a speedbar major display mode."
|
|
|
|
(interactive)
|
|
|
|
(require 'speedbar)
|
|
|
|
;; Make sure that speedbar is active
|
|
|
|
(speedbar-frame-mode 1)
|
|
|
|
;; Now, throw us into Info mode on speedbar.
|
|
|
|
(speedbar-change-initial-expansion-list "ERC")
|
|
|
|
(speedbar-get-focus))
|
|
|
|
|
|
|
|
(defun erc-speedbar-buttons (buffer)
|
|
|
|
"Create buttons for speedbar in BUFFER."
|
|
|
|
(erase-buffer)
|
2006-01-30 00:29:49 +00:00
|
|
|
(let (serverp chanp queryp)
|
2006-01-29 13:08:58 +00:00
|
|
|
(with-current-buffer buffer
|
2007-04-01 13:36:38 +00:00
|
|
|
(setq serverp (erc-server-buffer-p))
|
2006-01-29 13:08:58 +00:00
|
|
|
(setq chanp (erc-channel-p (erc-default-target)))
|
|
|
|
(setq queryp (erc-query-buffer-p)))
|
|
|
|
(cond (serverp
|
|
|
|
(erc-speedbar-channel-buttons nil 0 buffer))
|
|
|
|
(chanp
|
|
|
|
(erc-speedbar-insert-target buffer 0)
|
|
|
|
(forward-line -1)
|
|
|
|
(erc-speedbar-expand-channel "+" buffer 0))
|
|
|
|
(queryp
|
|
|
|
(erc-speedbar-insert-target buffer 0))
|
|
|
|
(t (ignore)))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-server-buttons (directory depth)
|
|
|
|
"Insert the initial list of servers you are connected to."
|
|
|
|
(let ((servers (erc-buffer-list
|
|
|
|
(lambda ()
|
|
|
|
(eq (current-buffer)
|
|
|
|
(process-buffer erc-server-process))))))
|
|
|
|
(when servers
|
|
|
|
(speedbar-with-writable
|
|
|
|
(dolist (server servers)
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'bracket ?+ 'erc-speedbar-expand-server server
|
|
|
|
(buffer-name server) 'erc-speedbar-goto-buffer server nil
|
|
|
|
depth))
|
|
|
|
t))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-expand-server (text server indent)
|
Fix regular-expression glitches and typos
Problems reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-03/msg00085.html
* admin/admin.el (set-version):
* lisp/allout.el (allout-latexify-one-item):
* lisp/arc-mode.el (archive-arc-rename-entry)
(archive-rar-summarize):
* lisp/calc/calc-graph.el (calc-graph-set-styles)
(calc-graph-hide):
* lisp/calc/calc-help.el (calc-describe-key):
* lisp/calc/calc-lang.el (math-compose-tex-func, eqn):
* lisp/calc/calc.el (calcDigit-key):
* lisp/cedet/ede/makefile-edit.el (makefile-macro-file-list):
* lisp/cedet/ede/speedbar.el (ede-tag-expand):
* lisp/cedet/semantic/sb.el (semantic-sb-show-extra)
(semantic-sb-expand-group):
* lisp/comint.el (comint-substitute-in-file-name):
* lisp/dired.el (dired-actual-switches):
* lisp/emacs-lisp/chart.el (chart-rmail-from):
* lisp/emacs-lisp/eieio-opt.el (eieio-sb-expand):
* lisp/emacs-lisp/eieio-speedbar.el (eieio-speedbar-object-expand):
* lisp/emacs-lisp/rx.el (rx-not, rx-atomic-p):
* lisp/emulation/viper-ex.el (viper-get-ex-token)
(viper-get-ex-pat, ex-set-read-variable):
* lisp/epg.el (epg--status-SIG_CREATED):
* lisp/erc/erc-speedbar.el (erc-speedbar-expand-user):
(erc-speedbar-expand-channel, erc-speedbar-expand-server)
* lisp/erc/erc.el (erc-is-message-ctcp-and-not-action-p)
(erc-banlist-update):
* lisp/eshell/em-dirs.el (eshell-parse-drive-letter, eshell/pwd):
* lisp/find-dired.el (find-dired):
* lisp/frame.el (frame-set-background-mode):
* lisp/generic-x.el (apache-log-generic-mode):
* lisp/gnus/gnus-art.el (gnus-button-valid-localpart-regexp):
* lisp/gnus/gnus.el (gnus-short-group-name):
* lisp/gnus/message.el (message-mailer-swallows-blank-line):
* lisp/ibuffer.el (ibuffer-fontification-alist):
* lisp/ido.el (ido-set-matches-1):
* lisp/info-xref.el (info-xref-lock-file-p):
* lisp/info.el (Info-dir-remove-duplicates)
(Info-unescape-quotes, Info-split-parameter-string)
(Info-speedbar-expand-node):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/language/ethio-util.el (ethio-fidel-to-tex-buffer):
* lisp/mail/rmail.el (rmail-collect-deleted):
* lisp/mh-e/mh-alias.el (mh-alias-suggest-alias):
* lisp/mh-e/mh-comp.el (mh-forward):
* lisp/mh-e/mh-search.el (mh-index-next-folder)
(mh-index-create-imenu-index):
* lisp/mh-e/mh-xface.el (mh-picon-get-image):
* lisp/minibuffer.el (completion--embedded-envvar-re):
* lisp/net/ange-ftp.el (ange-ftp-ls-parser):
* lisp/net/goto-addr.el (goto-address-mail-regexp)
(goto-address-find-address-at-point):
* lisp/net/pop3.el (pop3-read-response, pop3-user)
(pop3-pass, pop3-apop):
* lisp/net/tramp.el (tramp-ipv6-regexp)
(tramp-replace-environment-variables):
* lisp/nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set):
* lisp/nxml/rng-uri.el (rng-uri-escape-multibyte):
* lisp/nxml/rng-xsd.el (rng-xsd-convert-any-uri):
* lisp/obsolete/pgg.el (pgg-fetch-key):
* lisp/obsolete/vip.el (vip-get-ex-token):
* lisp/org/ob-core.el (org-babel-string-read):
* lisp/org/org-agenda.el:
(org-agenda-add-entry-to-org-agenda-diary-file):
* lisp/org/org-element.el (org-element-keyword-parser):
* lisp/org/org-list.el (org-list-indent-item-generic):
* lisp/org/org-mhe.el (org-mhe-get-message-folder-from-index):
* lisp/org/org-mobile.el (org-mobile-apply):
* lisp/org/org-mouse.el (org-mouse-context-menu):
* lisp/org/org-plot.el (org-plot/gnuplot):
* lisp/org/org-protocol.el (org-protocol-flatten-greedy):
* lisp/org/org-table.el (org-table-copy-down)
(org-table-formula-make-cmp-string)
(org-table-get-stored-formulas, org-table-recalculate)
(org-table-edit-formulas):
* lisp/org/org.el (org-translate-link-from-planner)
(org-fill-line-break-nobreak-p):
* lisp/org/ox-ascii.el (org-ascii-item):
* lisp/org/ox-latex.el (org-latex-clean-invalid-line-breaks):
* lisp/org/ox.el (org-export-expand-include-keyword):
* lisp/progmodes/ada-xref.el (ada-treat-cmd-string):
* lisp/progmodes/cfengine.el (cfengine2-font-lock-keywords):
* lisp/progmodes/cperl-mode.el (cperl-to-comment-or-eol)
(cperl-find-pods-heres, cperl-fix-line-spacing)
(cperl-have-help-regexp, cperl-word-at-point-hard)
(cperl-make-regexp-x):
* lisp/progmodes/dcl-mode.el (dcl-option-value-offset):
* lisp/progmodes/etags.el (tag-implicit-name-match-p):
* lisp/progmodes/fortran.el (fortran-fill):
* lisp/progmodes/gdb-mi.el (gdb-speedbar-expand-node)
(gdb-locals-handler-custom):
* lisp/progmodes/grep.el (grep-mode-font-lock-keywords):
* lisp/progmodes/gud.el (gud-jdb-find-source-using-classpath):
* lisp/progmodes/js.el (js--continued-expression-p):
* lisp/progmodes/m4-mode.el (m4-font-lock-keywords):
* lisp/progmodes/meta-mode.el (meta-indent-level-count):
* lisp/progmodes/mixal-mode.el (mixal-font-lock-keywords):
* lisp/progmodes/opascal.el (opascal-find-unit-in-directory):
* lisp/progmodes/pascal.el (pascal-progbeg-re):
* lisp/progmodes/ruby-mode.el (ruby-expression-expansion-re)
(ruby-expr-beg, ruby-parse-partial)
(ruby-toggle-string-quotes, ruby-font-lock-keywords):
* lisp/progmodes/sql.el (sql--make-help-docstring):
* lisp/progmodes/verilog-mode.el (verilog-coverpoint-re)
(verilog-skip-forward-comment-p)
(verilog-read-sub-decls-gate)
(verilog-read-auto-template-middle):
* lisp/progmodes/vhdl-mode.el (vhdl-resolve-env-variable)
(vhdl-speedbar-expand-project, vhdl-speedbar-expand-entity)
(vhdl-speedbar-expand-architecture)
(vhdl-speedbar-expand-config, vhdl-speedbar-expand-package)
(vhdl-speedbar-dired):
* lisp/speedbar.el (speedbar-dired, speedbar-tag-file)
(speedbar-tag-expand):
* lisp/textmodes/dns-mode.el (dns-mode-font-lock-keywords):
* lisp/textmodes/flyspell.el (flyspell-debug-signal-word-checked):
* lisp/textmodes/ispell.el (ispell-process-line):
* lisp/textmodes/reftex-cite.el (reftex-end-of-bib-entry):
* lisp/textmodes/reftex-ref.el (reftex-replace-prefix-escapes):
* lisp/url/url-parse.el (url-generic-parse-url):
* lisp/url/url-util.el (url-truncate-url-for-viewing):
* lisp/vc/diff-mode.el (diff-unified->context):
* lisp/vc/vc-bzr.el (vc-bzr-error-regexp-alist):
* lisp/vc/vc-cvs.el (vc-cvs-parse-status):
* lisp/woman.el (woman0-el, woman-if-ignore)
(woman-change-fonts):
* lisp/xdg.el (xdg--substitute-home-env):
Fix regular-expression infelicities and typos.
Fix regular expression typos
Fix typos reported by Mattias Engdegård in:
that occurred in preloaded modules.
* lisp/frame.el (frame-set-background-mode):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/minibuffer.el (completion--embedded-envvar-re):
2019-03-04 18:00:00 -08:00
|
|
|
(cond ((string-match "\\+" text)
|
2006-01-29 13:08:58 +00:00
|
|
|
(speedbar-change-expand-button-char ?-)
|
|
|
|
(if (speedbar-with-writable
|
|
|
|
(save-excursion
|
|
|
|
(end-of-line) (forward-char 1)
|
|
|
|
(erc-speedbar-channel-buttons nil (1+ indent) server)))
|
|
|
|
(speedbar-change-expand-button-char ?-)
|
|
|
|
(speedbar-change-expand-button-char ??)))
|
|
|
|
((string-match "-" text) ;we have to contract this node
|
|
|
|
(speedbar-change-expand-button-char ?+)
|
|
|
|
(speedbar-delete-subblock indent))
|
|
|
|
(t (error "Ooops... not sure what to do")))
|
|
|
|
(speedbar-center-buffer-smartly))
|
|
|
|
|
|
|
|
(defun erc-speedbar-channel-buttons (directory depth server-buffer)
|
|
|
|
(when (get-buffer server-buffer)
|
|
|
|
(let* ((proc (with-current-buffer server-buffer erc-server-process))
|
|
|
|
(targets (erc-buffer-list
|
|
|
|
(lambda ()
|
|
|
|
(not (eq (process-buffer erc-server-process)
|
|
|
|
(current-buffer))))
|
|
|
|
proc)))
|
|
|
|
(when targets
|
|
|
|
(speedbar-with-writable
|
|
|
|
(dolist (target targets)
|
|
|
|
(erc-speedbar-insert-target target depth))
|
|
|
|
t)))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-insert-target (buffer depth)
|
|
|
|
(if (with-current-buffer buffer
|
|
|
|
(erc-channel-p (erc-default-target)))
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'bracket ?+ 'erc-speedbar-expand-channel buffer
|
|
|
|
(buffer-name buffer) 'erc-speedbar-goto-buffer buffer nil
|
|
|
|
depth)
|
|
|
|
;; Query target
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
nil nil nil nil
|
|
|
|
(buffer-name buffer) 'erc-speedbar-goto-buffer buffer nil
|
|
|
|
depth)))
|
|
|
|
|
|
|
|
(defun erc-speedbar-expand-channel (text channel indent)
|
|
|
|
"For the line matching TEXT, in CHANNEL, expand or contract a line.
|
|
|
|
INDENT is the current indentation level."
|
|
|
|
(cond
|
Fix regular-expression glitches and typos
Problems reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-03/msg00085.html
* admin/admin.el (set-version):
* lisp/allout.el (allout-latexify-one-item):
* lisp/arc-mode.el (archive-arc-rename-entry)
(archive-rar-summarize):
* lisp/calc/calc-graph.el (calc-graph-set-styles)
(calc-graph-hide):
* lisp/calc/calc-help.el (calc-describe-key):
* lisp/calc/calc-lang.el (math-compose-tex-func, eqn):
* lisp/calc/calc.el (calcDigit-key):
* lisp/cedet/ede/makefile-edit.el (makefile-macro-file-list):
* lisp/cedet/ede/speedbar.el (ede-tag-expand):
* lisp/cedet/semantic/sb.el (semantic-sb-show-extra)
(semantic-sb-expand-group):
* lisp/comint.el (comint-substitute-in-file-name):
* lisp/dired.el (dired-actual-switches):
* lisp/emacs-lisp/chart.el (chart-rmail-from):
* lisp/emacs-lisp/eieio-opt.el (eieio-sb-expand):
* lisp/emacs-lisp/eieio-speedbar.el (eieio-speedbar-object-expand):
* lisp/emacs-lisp/rx.el (rx-not, rx-atomic-p):
* lisp/emulation/viper-ex.el (viper-get-ex-token)
(viper-get-ex-pat, ex-set-read-variable):
* lisp/epg.el (epg--status-SIG_CREATED):
* lisp/erc/erc-speedbar.el (erc-speedbar-expand-user):
(erc-speedbar-expand-channel, erc-speedbar-expand-server)
* lisp/erc/erc.el (erc-is-message-ctcp-and-not-action-p)
(erc-banlist-update):
* lisp/eshell/em-dirs.el (eshell-parse-drive-letter, eshell/pwd):
* lisp/find-dired.el (find-dired):
* lisp/frame.el (frame-set-background-mode):
* lisp/generic-x.el (apache-log-generic-mode):
* lisp/gnus/gnus-art.el (gnus-button-valid-localpart-regexp):
* lisp/gnus/gnus.el (gnus-short-group-name):
* lisp/gnus/message.el (message-mailer-swallows-blank-line):
* lisp/ibuffer.el (ibuffer-fontification-alist):
* lisp/ido.el (ido-set-matches-1):
* lisp/info-xref.el (info-xref-lock-file-p):
* lisp/info.el (Info-dir-remove-duplicates)
(Info-unescape-quotes, Info-split-parameter-string)
(Info-speedbar-expand-node):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/language/ethio-util.el (ethio-fidel-to-tex-buffer):
* lisp/mail/rmail.el (rmail-collect-deleted):
* lisp/mh-e/mh-alias.el (mh-alias-suggest-alias):
* lisp/mh-e/mh-comp.el (mh-forward):
* lisp/mh-e/mh-search.el (mh-index-next-folder)
(mh-index-create-imenu-index):
* lisp/mh-e/mh-xface.el (mh-picon-get-image):
* lisp/minibuffer.el (completion--embedded-envvar-re):
* lisp/net/ange-ftp.el (ange-ftp-ls-parser):
* lisp/net/goto-addr.el (goto-address-mail-regexp)
(goto-address-find-address-at-point):
* lisp/net/pop3.el (pop3-read-response, pop3-user)
(pop3-pass, pop3-apop):
* lisp/net/tramp.el (tramp-ipv6-regexp)
(tramp-replace-environment-variables):
* lisp/nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set):
* lisp/nxml/rng-uri.el (rng-uri-escape-multibyte):
* lisp/nxml/rng-xsd.el (rng-xsd-convert-any-uri):
* lisp/obsolete/pgg.el (pgg-fetch-key):
* lisp/obsolete/vip.el (vip-get-ex-token):
* lisp/org/ob-core.el (org-babel-string-read):
* lisp/org/org-agenda.el:
(org-agenda-add-entry-to-org-agenda-diary-file):
* lisp/org/org-element.el (org-element-keyword-parser):
* lisp/org/org-list.el (org-list-indent-item-generic):
* lisp/org/org-mhe.el (org-mhe-get-message-folder-from-index):
* lisp/org/org-mobile.el (org-mobile-apply):
* lisp/org/org-mouse.el (org-mouse-context-menu):
* lisp/org/org-plot.el (org-plot/gnuplot):
* lisp/org/org-protocol.el (org-protocol-flatten-greedy):
* lisp/org/org-table.el (org-table-copy-down)
(org-table-formula-make-cmp-string)
(org-table-get-stored-formulas, org-table-recalculate)
(org-table-edit-formulas):
* lisp/org/org.el (org-translate-link-from-planner)
(org-fill-line-break-nobreak-p):
* lisp/org/ox-ascii.el (org-ascii-item):
* lisp/org/ox-latex.el (org-latex-clean-invalid-line-breaks):
* lisp/org/ox.el (org-export-expand-include-keyword):
* lisp/progmodes/ada-xref.el (ada-treat-cmd-string):
* lisp/progmodes/cfengine.el (cfengine2-font-lock-keywords):
* lisp/progmodes/cperl-mode.el (cperl-to-comment-or-eol)
(cperl-find-pods-heres, cperl-fix-line-spacing)
(cperl-have-help-regexp, cperl-word-at-point-hard)
(cperl-make-regexp-x):
* lisp/progmodes/dcl-mode.el (dcl-option-value-offset):
* lisp/progmodes/etags.el (tag-implicit-name-match-p):
* lisp/progmodes/fortran.el (fortran-fill):
* lisp/progmodes/gdb-mi.el (gdb-speedbar-expand-node)
(gdb-locals-handler-custom):
* lisp/progmodes/grep.el (grep-mode-font-lock-keywords):
* lisp/progmodes/gud.el (gud-jdb-find-source-using-classpath):
* lisp/progmodes/js.el (js--continued-expression-p):
* lisp/progmodes/m4-mode.el (m4-font-lock-keywords):
* lisp/progmodes/meta-mode.el (meta-indent-level-count):
* lisp/progmodes/mixal-mode.el (mixal-font-lock-keywords):
* lisp/progmodes/opascal.el (opascal-find-unit-in-directory):
* lisp/progmodes/pascal.el (pascal-progbeg-re):
* lisp/progmodes/ruby-mode.el (ruby-expression-expansion-re)
(ruby-expr-beg, ruby-parse-partial)
(ruby-toggle-string-quotes, ruby-font-lock-keywords):
* lisp/progmodes/sql.el (sql--make-help-docstring):
* lisp/progmodes/verilog-mode.el (verilog-coverpoint-re)
(verilog-skip-forward-comment-p)
(verilog-read-sub-decls-gate)
(verilog-read-auto-template-middle):
* lisp/progmodes/vhdl-mode.el (vhdl-resolve-env-variable)
(vhdl-speedbar-expand-project, vhdl-speedbar-expand-entity)
(vhdl-speedbar-expand-architecture)
(vhdl-speedbar-expand-config, vhdl-speedbar-expand-package)
(vhdl-speedbar-dired):
* lisp/speedbar.el (speedbar-dired, speedbar-tag-file)
(speedbar-tag-expand):
* lisp/textmodes/dns-mode.el (dns-mode-font-lock-keywords):
* lisp/textmodes/flyspell.el (flyspell-debug-signal-word-checked):
* lisp/textmodes/ispell.el (ispell-process-line):
* lisp/textmodes/reftex-cite.el (reftex-end-of-bib-entry):
* lisp/textmodes/reftex-ref.el (reftex-replace-prefix-escapes):
* lisp/url/url-parse.el (url-generic-parse-url):
* lisp/url/url-util.el (url-truncate-url-for-viewing):
* lisp/vc/diff-mode.el (diff-unified->context):
* lisp/vc/vc-bzr.el (vc-bzr-error-regexp-alist):
* lisp/vc/vc-cvs.el (vc-cvs-parse-status):
* lisp/woman.el (woman0-el, woman-if-ignore)
(woman-change-fonts):
* lisp/xdg.el (xdg--substitute-home-env):
Fix regular-expression infelicities and typos.
Fix regular expression typos
Fix typos reported by Mattias Engdegård in:
that occurred in preloaded modules.
* lisp/frame.el (frame-set-background-mode):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/minibuffer.el (completion--embedded-envvar-re):
2019-03-04 18:00:00 -08:00
|
|
|
((string-match "\\+" text)
|
2006-01-29 13:08:58 +00:00
|
|
|
(speedbar-change-expand-button-char ?-)
|
|
|
|
(speedbar-with-writable
|
|
|
|
(save-excursion
|
|
|
|
(end-of-line) (forward-char 1)
|
|
|
|
(let ((modes (with-current-buffer channel
|
|
|
|
(concat (apply 'concat
|
|
|
|
erc-channel-modes)
|
|
|
|
(cond
|
|
|
|
((and erc-channel-user-limit
|
|
|
|
erc-channel-key)
|
|
|
|
(if erc-show-channel-key-p
|
|
|
|
(format "lk %.0f %s"
|
|
|
|
erc-channel-user-limit
|
|
|
|
erc-channel-key)
|
|
|
|
(format "kl %.0f" erc-channel-user-limit)))
|
|
|
|
(erc-channel-user-limit
|
|
|
|
;; Emacs has no bignums
|
|
|
|
(format "l %.0f" erc-channel-user-limit))
|
|
|
|
(erc-channel-key
|
|
|
|
(if erc-show-channel-key-p
|
|
|
|
(format "k %s" erc-channel-key)
|
|
|
|
"k"))
|
|
|
|
(t "")))))
|
|
|
|
(topic (erc-controls-interpret
|
|
|
|
(with-current-buffer channel erc-channel-topic))))
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'angle ?i nil nil
|
|
|
|
(concat "Modes: +" modes) nil nil nil
|
|
|
|
(1+ indent))
|
|
|
|
(unless (string= topic "")
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'angle ?i nil nil
|
|
|
|
(concat "Topic: " topic) nil nil nil
|
|
|
|
(1+ indent)))
|
|
|
|
(let ((names (cond ((eq erc-speedbar-sort-users-type 'alphabetical)
|
|
|
|
(erc-sort-channel-users-alphabetically
|
|
|
|
(with-current-buffer channel
|
|
|
|
(erc-get-channel-user-list))))
|
|
|
|
((eq erc-speedbar-sort-users-type 'activity)
|
|
|
|
(erc-sort-channel-users-by-activity
|
|
|
|
(with-current-buffer channel
|
|
|
|
(erc-get-channel-user-list))))
|
|
|
|
(t (with-current-buffer channel
|
|
|
|
(erc-get-channel-user-list))))))
|
|
|
|
(when names
|
|
|
|
(speedbar-with-writable
|
|
|
|
(dolist (entry names)
|
|
|
|
(erc-speedbar-insert-user entry ?+ (1+ indent))))))))))
|
|
|
|
((string-match "-" text)
|
|
|
|
(speedbar-change-expand-button-char ?+)
|
|
|
|
(speedbar-delete-subblock indent))
|
|
|
|
(t (error "Ooops... not sure what to do")))
|
|
|
|
(speedbar-center-buffer-smartly))
|
|
|
|
|
|
|
|
(defun erc-speedbar-insert-user (entry exp-char indent)
|
|
|
|
"Insert one user based on the channel member list ENTRY.
|
|
|
|
EXP-CHAR is the expansion character to use.
|
|
|
|
INDENT is the current indentation level."
|
|
|
|
(let* ((user (car entry))
|
|
|
|
(cuser (cdr entry))
|
|
|
|
(nick (erc-server-user-nickname user))
|
|
|
|
(host (erc-server-user-host user))
|
|
|
|
(info (erc-server-user-info user))
|
|
|
|
(login (erc-server-user-login user))
|
|
|
|
(name (erc-server-user-full-name user))
|
|
|
|
(voice (and cuser (erc-channel-user-voice cuser)))
|
|
|
|
(op (and cuser (erc-channel-user-op cuser)))
|
|
|
|
(nick-str (concat (if op "@" "") (if voice "+" "") nick))
|
|
|
|
(finger (concat login (when (or login host) "@") host))
|
|
|
|
(sbtoken (list finger name info)))
|
|
|
|
(if (or login host name info) ; we want to be expandable
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'bracket ?+ 'erc-speedbar-expand-user sbtoken
|
|
|
|
nick-str nil sbtoken nil
|
|
|
|
indent)
|
|
|
|
(when (equal exp-char ?-)
|
|
|
|
(forward-line -1)
|
|
|
|
(erc-speedbar-expand-user "+" (list finger name info) indent))
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
'statictag ?? nil nil
|
|
|
|
nick-str nil nil nil
|
|
|
|
indent))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-update-channel (buffer)
|
|
|
|
"Update the speedbar information about a ERC buffer. The update
|
|
|
|
is only done when the channel is actually expanded already."
|
|
|
|
;; This is only a rude hack and doesn't care about multiserver usage
|
|
|
|
;; yet, consider this a brain storming, better ideas?
|
|
|
|
(with-current-buffer speedbar-buffer
|
|
|
|
(save-excursion
|
|
|
|
(goto-char (point-min))
|
|
|
|
(when (re-search-forward (concat "^1: *.+. *"
|
|
|
|
(regexp-quote (buffer-name buffer)))
|
|
|
|
nil t)
|
|
|
|
(beginning-of-line)
|
|
|
|
(speedbar-delete-subblock 1)
|
|
|
|
(erc-speedbar-expand-channel "+" buffer 1)))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-expand-user (text token indent)
|
Fix regular-expression glitches and typos
Problems reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-03/msg00085.html
* admin/admin.el (set-version):
* lisp/allout.el (allout-latexify-one-item):
* lisp/arc-mode.el (archive-arc-rename-entry)
(archive-rar-summarize):
* lisp/calc/calc-graph.el (calc-graph-set-styles)
(calc-graph-hide):
* lisp/calc/calc-help.el (calc-describe-key):
* lisp/calc/calc-lang.el (math-compose-tex-func, eqn):
* lisp/calc/calc.el (calcDigit-key):
* lisp/cedet/ede/makefile-edit.el (makefile-macro-file-list):
* lisp/cedet/ede/speedbar.el (ede-tag-expand):
* lisp/cedet/semantic/sb.el (semantic-sb-show-extra)
(semantic-sb-expand-group):
* lisp/comint.el (comint-substitute-in-file-name):
* lisp/dired.el (dired-actual-switches):
* lisp/emacs-lisp/chart.el (chart-rmail-from):
* lisp/emacs-lisp/eieio-opt.el (eieio-sb-expand):
* lisp/emacs-lisp/eieio-speedbar.el (eieio-speedbar-object-expand):
* lisp/emacs-lisp/rx.el (rx-not, rx-atomic-p):
* lisp/emulation/viper-ex.el (viper-get-ex-token)
(viper-get-ex-pat, ex-set-read-variable):
* lisp/epg.el (epg--status-SIG_CREATED):
* lisp/erc/erc-speedbar.el (erc-speedbar-expand-user):
(erc-speedbar-expand-channel, erc-speedbar-expand-server)
* lisp/erc/erc.el (erc-is-message-ctcp-and-not-action-p)
(erc-banlist-update):
* lisp/eshell/em-dirs.el (eshell-parse-drive-letter, eshell/pwd):
* lisp/find-dired.el (find-dired):
* lisp/frame.el (frame-set-background-mode):
* lisp/generic-x.el (apache-log-generic-mode):
* lisp/gnus/gnus-art.el (gnus-button-valid-localpart-regexp):
* lisp/gnus/gnus.el (gnus-short-group-name):
* lisp/gnus/message.el (message-mailer-swallows-blank-line):
* lisp/ibuffer.el (ibuffer-fontification-alist):
* lisp/ido.el (ido-set-matches-1):
* lisp/info-xref.el (info-xref-lock-file-p):
* lisp/info.el (Info-dir-remove-duplicates)
(Info-unescape-quotes, Info-split-parameter-string)
(Info-speedbar-expand-node):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/language/ethio-util.el (ethio-fidel-to-tex-buffer):
* lisp/mail/rmail.el (rmail-collect-deleted):
* lisp/mh-e/mh-alias.el (mh-alias-suggest-alias):
* lisp/mh-e/mh-comp.el (mh-forward):
* lisp/mh-e/mh-search.el (mh-index-next-folder)
(mh-index-create-imenu-index):
* lisp/mh-e/mh-xface.el (mh-picon-get-image):
* lisp/minibuffer.el (completion--embedded-envvar-re):
* lisp/net/ange-ftp.el (ange-ftp-ls-parser):
* lisp/net/goto-addr.el (goto-address-mail-regexp)
(goto-address-find-address-at-point):
* lisp/net/pop3.el (pop3-read-response, pop3-user)
(pop3-pass, pop3-apop):
* lisp/net/tramp.el (tramp-ipv6-regexp)
(tramp-replace-environment-variables):
* lisp/nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set):
* lisp/nxml/rng-uri.el (rng-uri-escape-multibyte):
* lisp/nxml/rng-xsd.el (rng-xsd-convert-any-uri):
* lisp/obsolete/pgg.el (pgg-fetch-key):
* lisp/obsolete/vip.el (vip-get-ex-token):
* lisp/org/ob-core.el (org-babel-string-read):
* lisp/org/org-agenda.el:
(org-agenda-add-entry-to-org-agenda-diary-file):
* lisp/org/org-element.el (org-element-keyword-parser):
* lisp/org/org-list.el (org-list-indent-item-generic):
* lisp/org/org-mhe.el (org-mhe-get-message-folder-from-index):
* lisp/org/org-mobile.el (org-mobile-apply):
* lisp/org/org-mouse.el (org-mouse-context-menu):
* lisp/org/org-plot.el (org-plot/gnuplot):
* lisp/org/org-protocol.el (org-protocol-flatten-greedy):
* lisp/org/org-table.el (org-table-copy-down)
(org-table-formula-make-cmp-string)
(org-table-get-stored-formulas, org-table-recalculate)
(org-table-edit-formulas):
* lisp/org/org.el (org-translate-link-from-planner)
(org-fill-line-break-nobreak-p):
* lisp/org/ox-ascii.el (org-ascii-item):
* lisp/org/ox-latex.el (org-latex-clean-invalid-line-breaks):
* lisp/org/ox.el (org-export-expand-include-keyword):
* lisp/progmodes/ada-xref.el (ada-treat-cmd-string):
* lisp/progmodes/cfengine.el (cfengine2-font-lock-keywords):
* lisp/progmodes/cperl-mode.el (cperl-to-comment-or-eol)
(cperl-find-pods-heres, cperl-fix-line-spacing)
(cperl-have-help-regexp, cperl-word-at-point-hard)
(cperl-make-regexp-x):
* lisp/progmodes/dcl-mode.el (dcl-option-value-offset):
* lisp/progmodes/etags.el (tag-implicit-name-match-p):
* lisp/progmodes/fortran.el (fortran-fill):
* lisp/progmodes/gdb-mi.el (gdb-speedbar-expand-node)
(gdb-locals-handler-custom):
* lisp/progmodes/grep.el (grep-mode-font-lock-keywords):
* lisp/progmodes/gud.el (gud-jdb-find-source-using-classpath):
* lisp/progmodes/js.el (js--continued-expression-p):
* lisp/progmodes/m4-mode.el (m4-font-lock-keywords):
* lisp/progmodes/meta-mode.el (meta-indent-level-count):
* lisp/progmodes/mixal-mode.el (mixal-font-lock-keywords):
* lisp/progmodes/opascal.el (opascal-find-unit-in-directory):
* lisp/progmodes/pascal.el (pascal-progbeg-re):
* lisp/progmodes/ruby-mode.el (ruby-expression-expansion-re)
(ruby-expr-beg, ruby-parse-partial)
(ruby-toggle-string-quotes, ruby-font-lock-keywords):
* lisp/progmodes/sql.el (sql--make-help-docstring):
* lisp/progmodes/verilog-mode.el (verilog-coverpoint-re)
(verilog-skip-forward-comment-p)
(verilog-read-sub-decls-gate)
(verilog-read-auto-template-middle):
* lisp/progmodes/vhdl-mode.el (vhdl-resolve-env-variable)
(vhdl-speedbar-expand-project, vhdl-speedbar-expand-entity)
(vhdl-speedbar-expand-architecture)
(vhdl-speedbar-expand-config, vhdl-speedbar-expand-package)
(vhdl-speedbar-dired):
* lisp/speedbar.el (speedbar-dired, speedbar-tag-file)
(speedbar-tag-expand):
* lisp/textmodes/dns-mode.el (dns-mode-font-lock-keywords):
* lisp/textmodes/flyspell.el (flyspell-debug-signal-word-checked):
* lisp/textmodes/ispell.el (ispell-process-line):
* lisp/textmodes/reftex-cite.el (reftex-end-of-bib-entry):
* lisp/textmodes/reftex-ref.el (reftex-replace-prefix-escapes):
* lisp/url/url-parse.el (url-generic-parse-url):
* lisp/url/url-util.el (url-truncate-url-for-viewing):
* lisp/vc/diff-mode.el (diff-unified->context):
* lisp/vc/vc-bzr.el (vc-bzr-error-regexp-alist):
* lisp/vc/vc-cvs.el (vc-cvs-parse-status):
* lisp/woman.el (woman0-el, woman-if-ignore)
(woman-change-fonts):
* lisp/xdg.el (xdg--substitute-home-env):
Fix regular-expression infelicities and typos.
Fix regular expression typos
Fix typos reported by Mattias Engdegård in:
that occurred in preloaded modules.
* lisp/frame.el (frame-set-background-mode):
* lisp/international/mule.el (sgml-html-meta-auto-coding-function):
* lisp/isearch.el (isearch-pre-command-hook):
* lisp/minibuffer.el (completion--embedded-envvar-re):
2019-03-04 18:00:00 -08:00
|
|
|
(cond ((string-match "\\+" text)
|
2006-01-29 13:08:58 +00:00
|
|
|
(speedbar-change-expand-button-char ?-)
|
|
|
|
(speedbar-with-writable
|
|
|
|
(save-excursion
|
|
|
|
(end-of-line) (forward-char 1)
|
|
|
|
(let ((finger (nth 0 token))
|
|
|
|
(name (nth 1 token))
|
|
|
|
(info (nth 2 token)))
|
|
|
|
(when finger
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
nil nil nil nil
|
|
|
|
finger nil nil nil
|
|
|
|
(1+ indent)))
|
|
|
|
(when name
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
nil nil nil nil
|
|
|
|
name nil nil nil
|
|
|
|
(1+ indent)))
|
|
|
|
(when info
|
|
|
|
(speedbar-make-tag-line
|
|
|
|
nil nil nil nil
|
|
|
|
info nil nil nil
|
|
|
|
(1+ indent)))))))
|
|
|
|
((string-match "-" text)
|
|
|
|
(speedbar-change-expand-button-char ?+)
|
|
|
|
(speedbar-delete-subblock indent))
|
|
|
|
(t (error "Ooops... not sure what to do")))
|
|
|
|
(speedbar-center-buffer-smartly))
|
|
|
|
|
|
|
|
(defun erc-speedbar-goto-buffer (text buffer indent)
|
|
|
|
"When user clicks on TEXT, goto an ERC buffer.
|
|
|
|
The INDENT level is ignored."
|
|
|
|
(if (featurep 'dframe)
|
|
|
|
(progn
|
|
|
|
(dframe-select-attached-frame speedbar-frame)
|
|
|
|
(let ((bwin (get-buffer-window buffer 0)))
|
|
|
|
(if bwin
|
|
|
|
(progn
|
|
|
|
(select-window bwin)
|
|
|
|
(raise-frame (window-frame bwin)))
|
|
|
|
(if dframe-power-click
|
|
|
|
(let ((pop-up-frames t))
|
|
|
|
(select-window (display-buffer buffer)))
|
|
|
|
(dframe-select-attached-frame speedbar-frame)
|
|
|
|
(switch-to-buffer buffer)))))
|
|
|
|
(let ((bwin (get-buffer-window buffer 0)))
|
|
|
|
(if bwin
|
|
|
|
(progn
|
|
|
|
(select-window bwin)
|
|
|
|
(raise-frame (window-frame bwin)))
|
|
|
|
(if speedbar-power-click
|
|
|
|
(let ((pop-up-frames t)) (select-window (display-buffer buffer)))
|
2006-01-30 00:29:49 +00:00
|
|
|
(dframe-select-attached-frame speedbar-frame)
|
2006-01-29 13:08:58 +00:00
|
|
|
(switch-to-buffer buffer))))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-line-text ()
|
|
|
|
"Return the text for the item on the current line."
|
|
|
|
(beginning-of-line)
|
|
|
|
(when (re-search-forward "[]>] " nil t)
|
|
|
|
(buffer-substring-no-properties (point) (point-at-eol))))
|
|
|
|
|
|
|
|
(defun erc-speedbar-item-info ()
|
|
|
|
"Display information about the current buffer on the current line."
|
|
|
|
(let ((data (speedbar-line-token))
|
|
|
|
(txt (erc-speedbar-line-text)))
|
|
|
|
(cond ((and data (listp data))
|
|
|
|
(message "%s: %s" txt (car data)))
|
|
|
|
((bufferp data)
|
|
|
|
(message "Channel: %s" txt))
|
|
|
|
(t
|
|
|
|
(message "%s" txt)))))
|
|
|
|
|
|
|
|
(provide 'erc-speedbar)
|
|
|
|
;;; erc-speedbar.el ends here
|
|
|
|
;;
|
|
|
|
;; Local Variables:
|
Put most erc autoloads in a dedicated file erc-loaddefs.el
These are features that are only useful after erc.el is loaded.
* lisp/erc/erc.el (top-level): Load erc-loaddefs.
* lisp/erc/erc-autoaway.el, lisp/erc/erc-button.el:
* lisp/erc/erc-capab.el, lisp/erc/erc-compat.el:
* lisp/erc/erc-dcc.el, lisp/erc/erc-desktop-notifications.el:
* lisp/erc/erc-ezbounce.el, lisp/erc/erc-fill.el:
* lisp/erc/erc-identd.el, lisp/erc/erc-imenu.el:
* lisp/erc/erc-join.el, lisp/erc/erc-list.el, lisp/erc/erc-log.el:
* lisp/erc/erc-match.el, lisp/erc/erc-menu.el:
* lisp/erc/erc-netsplit.el, lisp/erc/erc-notify.el:
* lisp/erc/erc-page.el, lisp/erc/erc-pcomplete.el:
* lisp/erc/erc-replace.el, lisp/erc/erc-ring.el:
* lisp/erc/erc-services.el, lisp/erc/erc-sound.el:
* lisp/erc/erc-speedbar.el, lisp/erc/erc-spelling.el:
* lisp/erc/erc-stamp.el, lisp/erc/erc-track.el:
* lisp/erc/erc-truncate.el, lisp/erc/erc-xdcc.el:
Set generated-autoload-file to "erc-loaddefs.el".
2017-11-28 21:16:02 -05:00
|
|
|
;; generated-autoload-file: "erc-loaddefs.el"
|
2006-01-29 13:08:58 +00:00
|
|
|
;; indent-tabs-mode: t
|
|
|
|
;; tab-width: 8
|
|
|
|
;; End:
|