App-Chart
view release on metacpan or search on metacpan
emacs/chartprog.el view on Meta::CPAN
(progn
(setq need (cons symbol need))
(propertize (concat symbol "\n")
'chartprog-symbol symbol)))))
(unless symbol-list
(if (chartprog-symlist-editable-p chartprog-watchlist-current-symlist)
(insert (format "\n\n(Empty list, use `%s' to add a symbol.)"
(key-description
(car (where-is-internal
'chartprog-watchlist-add
chartprog-watchlist-map)))))
(insert (format "\n\n(Empty list.)"))))))
(if need
(chartprog-exec 'latest-get-list (nreverse need)))))))
;;-----------------------------------------------------------------------------
;; header-line-format hscrolling
(defconst chartprog-header-line-scrolling-align0
(propertize " " 'display '((space :align-to 0)))
"An internal part of chartprog.el.
An string which is space with align-to 0 property.")
(defvar chartprog-header-line-scrolling-str nil
"An internal part of chartprog.el.
Buffer local full `header-line-format' string to be hscrolled.")
(defun chartprog-header-line-scrolling-align ()
"An internal part of chartprog.el.
Return a string which will align to column 0 in a `header-line-format'."
(if (string-match "^21\\." emacs-version)
(and (display-graphic-p)
(concat " " ;; the fringe
(and (eq 'left (frame-parameter nil 'vertical-scroll-bars))
" "))) ;; left scrollbar
;; in emacs 22 and up align-to understands fringe and scrollbar
chartprog-header-line-scrolling-align0))
(defun chartprog-header-line-scrolling-eval ()
"An internal part of chartprog.el.
Install hscrolling header line updates on the windows of the current frame."
(concat (chartprog-header-line-scrolling-align)
(substring chartprog-header-line-scrolling-str
(min (length chartprog-header-line-scrolling-str)
(window-hscroll)))))
(defun chartprog-header-line-scrolling (str)
"An internal part of chartprog.el.
Set STR as `header-line-format' and make it follow any hscrolling."
(set (make-local-variable 'chartprog-header-line-scrolling-str) str)
(set (make-local-variable 'header-line-format)
'(:eval (chartprog-header-line-scrolling-eval))))
;;-----------------------------------------------------------------------------
;; watchlist commands
(defvar chartprog-watchlist-menu (make-sparse-keymap "Chart")
"An internal part of chartprog.el.
Menu for Chart watchlist.")
(defvar chartprog-watchlist-map
(let ((m (make-sparse-keymap)))
(define-key m "\C-k" 'chartprog-watchlist-kill-line)
(define-key m "\C-w" 'chartprog-watchlist-kill-region)
(define-key m "\C-y" 'chartprog-watchlist-yank)
(define-key m "\C-_" 'chartprog-watchlist-undo)
(define-key m "a" 'chartprog-watchlist-add)
(define-key m "g" 'chartprog-watchlist-refresh)
(define-key m "n" 'next-line)
(define-key m "q" 'chartprog-watchlist-quit)
(define-key m "p" 'previous-line)
(define-key m "L" 'chartprog-watchlist-symlist)
(define-key m "?" 'chartprog-watchlist-detail)
(define-key m [menu-bar chartprog] (cons "Chart" chartprog-watchlist-menu))
m)
"Keymap for Chart watchlist.")
(defun chartprog-watchlist-want-edit ()
"An internal part of chartprog.el.
Check that the watchlist being displayed is editable."
(or (chartprog-symlist-editable-p chartprog-watchlist-current-symlist)
(error "This list is not editable")))
(defun chartprog-watchlist-detail ()
"Show detail for this line (stock name and full quote and times)."
(interactive)
(let ((str (get-text-property (point-at-bol) 'help-echo)))
(if str
(message "%s" str))))
(defun chartprog-watchlist-kill-line ()
"Kill watchlist line into the kill ring.
Use \\[chartprog-watchlist-yank] to yank it back at a new position."
(interactive)
(chartprog-watchlist-want-edit)
(let ((inhibit-read-only t))
(save-excursion
(beginning-of-line)
(kill-line 1)))
(chartprog-exec 'symlist-delete chartprog-watchlist-current-symlist
(count-lines (point-min) (point-at-bol))
1))
(defun chartprog-watchlist-kill-region ()
"Kill watchlist region between point and mark into the kill ring.
Use \\[chartprog-watchlist-yank] to yank them back at a new position."
(interactive)
(chartprog-watchlist-want-edit)
(beginning-of-line)
(let* ((point-row (count-lines (point-min) (point)))
(mark-bol (save-excursion (goto-char (mark)) (point-at-bol)))
(mark-row (count-lines (point-min) mark-bol)))
(let ((inhibit-read-only t))
(kill-region mark-bol (point)))
(chartprog-exec 'symlist-delete chartprog-watchlist-current-symlist
(min point-row mark-row)
(abs (- point-row mark-row)))))
(defun chartprog-watchlist-mode-line-symlist-name ()
( run in 0.725 second using v1.01-cache-2.11-cpan-7fcb06a456a )