Skip to content

simendsjo/sijo-ctx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Switching between profiles in contexts

Switching between contexts. Heavily inspired by the contextual package.

A context contains a list of profiles, where only a single profile might be active per context. When changing a profile, a user-defined function for deactivating the currently active profile is called before a user-defined function for activating the new profile.

Usage

M-x sijo-ctx-switch-profile to switch a profile in the sijo-ctx-default-context context.

C-u M-x sijo-ctx-switch-profile to select a context before switching profile.

The callback functions can be lambdas ((lambda () )), functions (#'function) or symbols (~’function~). ~’function~ is preferred as you can recompile the function without having to register the profile again.

(sijo-ctx-add-profile 'some-profile
                      (lambda () (message "on activating"))
                      (lambda () (message "on deactivating"))
                      'some-context)

Example use-cases

Switch between different clients

(sijo-ctx-add-profile 'apple
                      (lambda () (message "Working for apple"))
                      (lambda () (message "Unloading apple"))
                      'client)

(sijo-ctx-add-profile 'fsf
                      (lambda () (message "Working for fsf"))
                      nil
                      'client)

(sijo-ctx--activate-profile 'apple 'client)
(sijo-ctx--activate-profile 'fsf 'client)

Different roles in a company

(sijo-ctx-add-profile 'developer
                      (lambda () (message "developer mode"))
                      nil
                      'awesome-company)

(sijo-ctx-add-profile 'tech-lead
                      (lambda () (message "tech-lead mode"))
                      nil
                      'awesome-company)

Different settings based on location

(sijo-ctx-add-profile '@home
                      (lambda () (message "Home sweet home"))
                      (lambda () (message "No longer home"))
                      'location)

(sijo-ctx-add-profile '@commute
                      (lambda () (message "Train goes choo choo"))
                      (lambda () (message "Elisp off rails"))
                      'location)

(sijo-ctx-add-profile '@office
                      (lambda () (message "At the office"))
                      (lambda () (message "Bye bye office"))
                      'location)

Switching between multiple email accounts

(sijo-ctx-add-profile 'gmail
                      (lambda () (message "Setup for gmail"))
                      nil
                      'email)

(sijo-ctx-add-profile 'fastmail
                      (lambda () (message "Setup for fastmail"))
                      nil
                      'email)

About

Switching between profiles in contexts

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published