|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#######
#
# E-scripts on porting stuff to the MacOS (formerly OSX and MacOSX)
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
# (find-eev-quick-intro)
# http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://anggtwu.net/e/osx.e>
# or at <http://anggtwu.net/e/osx.e.html>.
# See also <http://anggtwu.net/emacs.html>,
# <http://anggtwu.net/.emacs[.html]>,
# <http://anggtwu.net/.zshrc[.html]>,
# <http://anggtwu.net/escripts.html>,
# and <http://anggtwu.net/>.
#
#######
# «.name» (to "name")
# «.find-pdf-page» (to "find-pdf-page")
# «.firefox-wrapper» (to "firefox-wrapper")
# «.find-pdf-text» (to "find-pdf-text")
# «.vlc-as-mpv» (to "vlc-as-mpv")
# «.vlc-wrapper» (to "vlc-wrapper")
# «.lua51manual» (to "lua51manual")
# «.Vivaldi-a» (to "Vivaldi-a")
# «.Halian» (to "Halian")
# «.Halian-dot-emacs» (to "Halian-dot-emacs")
# «.emacs-plus» (to "emacs-plus")
https://www.reddit.com/r/emacs/comments/lijn31/best_emacs_port_for_mac_early_2021_edition/
https://www.emacswiki.org/emacs/EmacsForMacOS
http://emacsformacosx.com
http://www.mplayer2.org/downloads/
https://code.google.com/p/mplayerosx-builds/
https://github.com/pigoz/mplayerosx-builds
https://en.wikipedia.org/wiki/MacOS
https://discussions.apple.com/thread/8235766 AppleScript, Preview, and PDF Page access
https://discussions.apple.com/thread/8235766?answerId=8235766021#8235766021
https://en.wikipedia.org/wiki/Homebrew_(package_management_software)
https://en.wikipedia.org/wiki/MacPorts
# (find-status "poppler-utils")
# (find-vldifile "poppler-utils.list")
# (find-vldifile "poppler-utils.list" "/usr/bin/pdftotext")
# (find-udfile "poppler-utils/")
#####
#
# name
# 2023dec19
#
#####
# «name» (to ".name")
[parsnip pulls #emacs aside and explains in excruciating detail
that the name is macOS, and hasn't been OS X since 2016,
and wasn't Mac OS X since 2011]
#####
#
# find-pdf-page
# 2019oct01 / 2021jan21
#
#####
# «find-pdf-page» (to ".find-pdf-page")
;; These are the obvious (?) ways to define `ee-find-opera-page' and
;; `ee-find-firefox-page'...
;;
(defun ee-find-opera-page (fname &optional page)
`("opera" ,(ee-fname-page-to-url fname page)))
(defun ee-find-firefox-page (fname &optional page)
`("firefox" ,(ee-fname-page-to-url fname page)))
;; Define `find-opera-page' and friends:
;; (find-code-pdfbackend "opera-page")
(code-pdfbackend "opera-page")
;; Define `find-firefox-page' and friends:
;; (find-code-pdfbackend "firefox-page")
(code-pdfbackend "firefox-page")
;; My default for `find-pdf-page' on GNU/Linux:
;; (find-code-pdfbackendalias "pdf-page" "xpdf-page")
(code-pdfbackendalias "pdf-page" "xpdf-page")
;; Override it with Opera:
;; (find-code-pdfbackendalias "pdf-page" "opera-page")
(code-pdfbackendalias "pdf-page" "opera-page")
;; Override it with Firefox:
;; (find-code-pdfbackendalias "pdf-page" "firefox-page")
(code-pdfbackendalias "pdf-page" "firefox-page")
;; Override it with pdftools:
;; (find-code-pdfbackendalias "pdf-page" "pdftools-page")
(code-pdfbackendalias "pdf-page" "pdftools-page")
;; Download ~/Coetzee99.pdf for tests:
;; (find-pdf-like-intro "2. Preparation")
;; Low-level tests:
;; (ee-fname-page-to-url "~/Coetzee99.pdf" 3)
;; `("opera" ,(ee-fname-page-to-url "~/Coetzee99.pdf" 3))
;; (find-bgprocess `("opera" ,(ee-fname-page-to-url "~/Coetzee99.pdf" 3)))
;; (find-bgprocess `("firefox" ,(ee-fname-page-to-url "~/Coetzee99.pdf" 3)))
;; (find-bgprocess `("open" ,(ee-fname-page-to-url "~/Coetzee99.pdf" 3)))
;;
;; A high-level test:
;; (find-pdf-page "~/Coetzee99.pdf" 3)
#####
#
# firefox-wrapper
# 2024feb05
#
#####
# «firefox-wrapper» (to ".firefox-wrapper")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# Marc's wrapper script:
# (find-fline "~/bin/firefox")
cat > ~/bin/firefox <<'%%%'
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox "$@"
%%%
chmod 755 ~/bin/firefox
#####
#
# find-pdf-text
# 2021jan22
#
#####
# «find-pdf-text» (to ".find-pdf-text")
#####
#
# Use vlc instead of mpv
# 2021jan22
#
#####
# «vlc-as-mpv» (to ".vlc-as-mpv")
# (find-eev "eev-audiovideo.el" "find-vlc-video")
;; Hack: make find-mpv-video use vlc.
;; See: (find-audiovideo-intro "4.3. A demo")
;; This is a copy of the standard `ee-find-mpv-video', from:
;; (find-efunction 'ee-find-mpv-video)
;;
(defun ee-find-mpv-video (fname &optional pos &rest rest)
`("mpv"
,fname
,@(if pos (list (format "--start=%s" (ee-secs-to-mm:ss pos))))
,@ee-mpv-video-options
))
;; This is a quick-hack-ish modified version that uses vlc instead of
;; mpv, _without changing the name of the function_...
;;
(defun ee-find-mpv-video (fname &optional pos &rest rest)
`("vlc"
,@(if pos (list "--start-time" (format "%s" (ee-time-to-seconds pos))))
,fname
;; ,@ee-mpv-video-options
))
;; Tests:
;; (find-bgprocess "vlc ~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4")
;; (find-bgprocess "vlc --start-time 1:33 ~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4")
;; (find-bgprocess "vlc --start-time 93 ~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4")
;; (ee-find-mpv-video "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4" "1:33")
;; (find-mpv-video "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4" "1:33")
#####
#
# vlc-wrapper
# 2024feb05
#
#####
# «vlc-wrapper» (to ".vlc-wrapper")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# Marc's wrapper script:
# (find-fline "~/bin/vlc")
cat ~/bin/vlc <<'%%%'
#!/bin/sh
/Applications/VLC.app/Contents/MacOS/VLC "$@"
%%%
chmod 755 ~/bin/vlc
#####
#
# lua51manual
# 2021jan22
#
#####
# «lua51manual» (to ".lua51manual")
# (find-telegachat "1487862914#223264" "port contents all | grep lua | grep /manual.html")
# (find-telegachatm "1487862914#223264" "port contents all | grep lua | grep /manual.html")
# (find-telegachat "1487862914#223169" "port contents lua51-lpeg")
# (find-telegachatm "1487862914#223169" "port contents lua51-lpeg")
;; Test: (find-lua51manual "#6" "LUA_INIT" "@filename")
(defun find-lua51manual (&optional anchor &rest rest)
(interactive)
(brff (format "file:///opt/local/share/doc/lua51/manual.html%s" (or anchor ""))))
#####
#
# open -a Vivaldi
# 2023dec20
#
#####
# «Vivaldi-a» (to ".Vivaldi-a")
# (find-telegachat "1487862914#223301")
# (find-telegachatm "1487862914#223301")
# (find-telegachat "1487862914#223311")
# (find-telegachatm "1487862914#223311")
(defun find-googlechrome (url &rest rest)
(find-bgprocess `("/Applications/Vivaldi.app/Contents/MacOS/Vivaldi" ,url)))
(defun find-googlechrome (url &rest rest)
;; (find-bgprocess `("open" "-a" "Firefox" ,url)))
(find-bgprocess `("open" "-a" "Vivaldi" ,url)))
#####
#
# Halian
# 2024aug03
#
#####
# «Halian» (to ".Halian")
# (find-telegachat "-1002188044240#2292" "brave")
# (find-telegachat "-1002188044240#2312" "tem como ser C-<return>")
# (find-telegachat "-1002188044240#2334" "find-bgprocess")
# (find-telegachat "-1002188044240#2407" "mpv" "E me diz qual dos dois funciona")
# (find-telegachat "-1002188044240#2447" "(defalias 'find-pdf-page 'find-googlechrome-page)")
# (find-telegachat "-1002188044240#2424" "<C-return>")
# (find-altbrowser-links "{binary}")
# (find-altbrowser-links "Brave Browser")
# https://nootrix.com/tutorials/mac-open-file-url-parameters-command-line/
"file:///home/edrx/Coetzee99.pdf#page=3"
"file:///Users/aurus/Coetzee99.pdf#page=3"
• (eepitch-shell)
• (eepitch-kill)
• (eepitch-shell)
open -a "Brave Browser" "file:///Users/aurus/Coetzee99.pdf#page=3" &
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser \
"file:///Users/aurus/Coetzee99.pdf#page=3"
(find-bgprocess '(
"/Applications/Brave\ Browser.app/Contents/MacOS/Brave Browser"
"file:///Users/aurus/Coetzee99.pdf#page=3"
))
"mpv" "/tmp/emacsconf2021.mp4"))
(defalias 'find-pdf-page 'find-googlechrome-page)
(defun ee-find-googlechrome-page (fname &optional page)
`(,ee-brave-program ,(ee-fname-page-to-url fname page)))
;; Test: (find-pdf-page "~/Coetzee99.pdf" 3)
(find-bgprocess `("open" "-a" "Brave Browser" ,url)))
wget -nc http://anggtwu.net/eev-videos/emacsconf2021.mp4
wget -N http://anggtwu.net/eev-videos/emacsconf2021.vtt
mpv emacsconf2021.mp4
(find-bgprocess `("mpv" "/tmp/emacsconf2021.mp4"))
(find-bgprocess `("open" "-a" "mpv" "/tmp/emacsconf2021.mp4"))
#####
#
# Halian-dot-emacs
# 2024aug04
#
#####
# «Halian-dot-emacs» (to ".Halian-dot-emacs")
# (find-angg ".emacs.local.mac-halian")
# (find-wget-elisp "http://anggtwu.net/.emacs.local.mac-halian")
;; From: (find-es "osx" "Halian-dot-emacs")
;; See: (find-eev-quick-intro "6.1. The main key: <F8>")
;; From: (find-esetkey-links (kbd "<C-return>") 'eepitch-this-line)
(define-key eev-mode-map (kbd "<C-return>") 'eepitch-this-line)
;; Based on: (find-altbrowser-links "Brave Browser")
;; Tests: (find-bgprocess '("open" "-a" "Brave Browser" "https://www.lua.org/"))
;; (find-googlechrome "https://www.lua.org/")
;;
(defun find-googlechrome (url)
(find-bgprocess `("open" "-a" "Brave Browser" ,url)))
;; See: (find-eev "eev-pdflike.el" "find-googlechrome-page")
;; Tests: (find-pdf-like-intro)
;; (ee-find-googlechrome-page "~/Coetzee99.pdf" 3)
;; (find-googlechrome-page "~/Coetzee99.pdf" 3)
;; (find-pdf-page "~/Coetzee99.pdf" 3)
;;
(defalias 'find-pdf-page 'find-googlechrome-page)
(defun ee-find-googlechrome-page (fname &optional page)
`(,ee-brave-program
,(ee-fname-page-to-url fname page)))
(setq ee-brave-program
"/Applications/Brave Browser.app/Contents/MacOS/Brave Browser")
#####
#
# emacs-plus
# 2024sep07
#
#####
# «emacs-plus» (to ".emacs-plus")
# https://xenodium.com/my-emacs-eye-candy/
# https://github.com/d12frosted/homebrew-emacs-plus
# (find-es "lpeg" "lpeg-debug-mode")
# (find-lpegsrcfile "makefile" "macosx:")
# (find-lpegsrcfile "makefile" "macosx:" "-undefined dynamic_lookup")
# (find-telegachat "1487862914#225679")
# (find-telegachatm "1487862914#225679" "-undefined dynamic_lookup")
# (find-telegachat "1487862914#223165" "sudo port install lua51-lpeg")
• (eepitch-shell)
• (eepitch-kill)
• (eepitch-shell)
port echo all | grep /lpeg.html | sort
port echo all | grep /re.html | sort
port echo all | grep lua | grep /manual.html | sort
• (eepitch-shell)
• (eepitch-kill)
• (eepitch-shell)
port contents all | grep /lpeg.html | sort
port contents all | grep /re.html | sort
port contents all | grep lua | grep /manual.html | sort
# (find-fline "~/LOGS/2023dec19.emacs" "https://formulae.brew.sh/")
https://lldb.llvm.org/use/symbols.html On macOS, debug symbols are often in stand alone bundles called dSYM files
https://notes.billmill.org/blog/2024/02/How_to_love_homebrew.html
https://blog.trailofbits.com/2024/07/30/our-audit-of-homebrew/
https://xenodium.com/awesome-emacs-on-macos
# Local Variables:
# coding: utf-8-unix
# End: