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..
PR-add-terminal-settings
Allard Hendriksen 2019-07-05 17:51:15 +02:00
parent 00e0de3cd7
commit 9bf6b35b8a
3 changed files with 95 additions and 23 deletions

View File

@ -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"))

32
changelog.md Normal file
View File

@ -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

View File

@ -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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;