From 9bf6b35b8a04a62b72442dba8b0daa263b0cb98e Mon Sep 17 00:00:00 2001 From: Allard Hendriksen Date: Fri, 5 Jul 2019 17:51:15 +0200 Subject: [PATCH] Add deprecation warning for :terminal header arguments This commit adds a deprecation warning when the org source block header argument :terminal is set. This should give people time to adjust their settings. The settings `org-babel-tmux-terminal` org-babel-tmux-terminal-opts` take precedence over the `:terminal` argument. Since this is a backward-incompatible change, I have added a changelog.. --- README.org | 21 ++++++++--------- changelog.md | 32 ++++++++++++++++++++++++++ ob-tmux.el | 65 ++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 95 insertions(+), 23 deletions(-) create mode 100644 changelog.md diff --git a/README.org b/README.org index dc7e7c2..13ecc67 100644 --- a/README.org +++ b/README.org @@ -24,12 +24,9 @@ In your ~.emacs~ or ~.emacs.d/init.el~ file, add the following: #+BEGIN_SRC elisp (require 'ob-tmux) (setq org-babel-default-header-args:tmux - '((:results . "silent") ; - (:session . "default") ; The default tmux session to send code to - (:socket . nil))) ; The default tmux socket to communicate with - ;; You can use "xterm" and "gnome-terminal". - ;; On mac, you can use "iterm" as well. - (:terminal . "gnome-terminal"))) + '((:results . "silent") ; + (:session . "default") ; The default tmux session to send code to + (:socket . nil))) ; The default tmux socket to communicate with ;; The tmux sessions are prefixed with the following string. ;; You can customize this if you like. @@ -39,6 +36,7 @@ In your ~.emacs~ or ~.emacs.d/init.el~ file, add the following: ;; You can also customize the options passed to the terminal. (setq org-babel-tmux-terminal "xterm") (setq org-babel-tmux-terminal-opts '("-T" "ob-tmux" "-e")) + ; The default terminal is "gnome-terminal" with options "--". ;; Finally, if your tmux is not in your $PATH for whatever reason, you ;; may set the path to the tmux binary as follows: @@ -52,16 +50,17 @@ If you use =use-package=, you can also write :ensure t :custom (org-babel-default-header-args:tmux - '((:results . "silent") ; - (:session . "default") ; The default tmux session to send code to - (:socket . nil))) ; The default tmux socket to communicate with + '((:results . "silent") ; + (:session . "default") ; The default tmux session to send code to + (:socket . nil))) ; The default tmux socket to communicate with ;; The tmux sessions are prefixed with the following string. ;; You can customize this if you like. (org-babel-tmux-session-prefix "ob-") ;; The terminal that will be used. ;; You can also customize the options passed to the terminal. - (setq org-babel-tmux-terminal "xterm") - (setq org-babel-tmux-terminal-opts '("-T" "ob-tmux" "-e")) + ;; The default terminal is "gnome-terminal" with options "--". + (org-babel-tmux-terminal "xterm") + (org-babel-tmux-terminal-opts '("-T" "ob-tmux" "-e")) ;; Finally, if your tmux is not in your $PATH for whatever reason, you ;; may set the path to the tmux binary as follows: (org-babel-tmux-location "/usr/bin/tmux")) diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..c993116 --- /dev/null +++ b/changelog.md @@ -0,0 +1,32 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] +### Fixed +- Fix issue with lines containing leading minus signs "-". (Thanks to + medranocalvo!) +- Fix issue with lines containing trailing semicolon ";". +### Changed +- License language +### Deprecated +- Possibility to configure terminal using org-babel header arguments. +### Added +- Add installation instructions for MELPA. +- Add possibility to configure terminal and add options to the + terminal. (Thanks to dkrm0!) + +## [0.1.5] - 2018-07-19 +### Changed +- Make variables defcustom +- Rename internal functions + +## [0.1.1] - 2018-07-17 +### Added +- Initial release + +[Unreleased]: https://github.com/ahendriksen/ob-tmux/compare/0.1.5...HEAD +[0.1.5]: https://github.com/ahendriksen/ob-tmux/compare/0.1.1...0.1.5 +[0.1.1]: https://github.com/ahendriksen/ob-tmux/tree/0.1.1 diff --git a/ob-tmux.el b/ob-tmux.el index d36ebd7..837313d 100644 --- a/ob-tmux.el +++ b/ob-tmux.el @@ -91,7 +91,8 @@ Argument PARAMS the org parameters of the code block." (message "Sending source code block to interactive terminal session...") (save-window-excursion (let* ((org-session (cdr (assq :session params))) - (terminal org-babel-tmux-terminal) + (org-header-terminal (cdr (assq :terminal params))) + (terminal (or org-header-terminal org-babel-tmux-terminal)) (socket (cdr (assq :socket params))) (socket (when socket (expand-file-name socket))) (ob-session (ob-tmux--from-org-session org-session socket)) @@ -108,8 +109,12 @@ Argument PARAMS the org parameters of the code block." ;; Disable window renaming from within tmux (ob-tmux--disable-renaming ob-session) (ob-tmux--send-body - ob-session (org-babel-expand-body:generic body params))))) - + ob-session (org-babel-expand-body:generic body params)) + ;; Warn that setting the terminal from the org source block + ;; header arguments is going to be deprecated. + (message "ob-tmux terminal: %s" org-header-terminal) + (when org-header-terminal + (ob-tmux--deprecation-warning org-header-terminal))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ob-tmux object @@ -195,15 +200,15 @@ automatically space separated." Argument OB-SESSION: the current ob-tmux session." (let ((start-process-mandatory-args `("org-babel: terminal" - "*Messages*" - ,terminal)) - (tmux-cmd `(,org-babel-tmux-location - "attach-session" - "-t" ,(ob-tmux--target ob-session)))) - (unless (ob-tmux--socket ob-session) - (apply 'start-process (append start-process-mandatory-args - org-babel-tmux-terminal-opts - tmux-cmd))))) + "*Messages*" + ,terminal)) + (tmux-cmd `(,org-babel-tmux-location + "attach-session" + "-t" ,(ob-tmux--target ob-session)))) + (unless (ob-tmux--socket ob-session) + (apply 'start-process (append start-process-mandatory-args + org-babel-tmux-terminal-opts + tmux-cmd))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tmux interaction @@ -319,6 +324,42 @@ If no window is specified in OB-SESSION, returns 't." 't)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Warnings +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun ob-tmux--deprecation-warning (org-header-terminal) + (let* ((message (format "DEPRECATION WARNING: Setting `:terminal` using org source block header arguments is deprecated. + +Consider changing your ob-tmux configuration as follows: + +(setq org-babel-default-header-args:tmux + '((:results . \"\") + (:session . \"\") + (:terminal. \"%s\") ; <--- REMOVE THIS LINE + (:socket . nil))) + +;; You can now customize the terminal and its options as follows: +(setq org-babel-tmux-terminal \"%s\") +(setq org-babel-tmux-terminal-opts '(\"-T\" \"ob-tmux\" \"-e\")) +; The default terminal is \"gnome-terminal\" with options \"--\". + +If you have any source blocks containing `:terminal`, please consider removing them: + + #+begin_src tmux :session test :terminal %s + echo hello + #+end_src + +Becomes: + + #+begin_src tmux :session test + echo hello + #+end_src + +End of warning. (See *Warnings* buffer for full message) +" org-header-terminal org-header-terminal org-header-terminal))) + (display-warning 'deprecation-warning message :warning) + message)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Test functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;